How to round in javascript like PHP do
I'm trying to round a float number in Javascript in the same way that I do it in PHP; but I can not make both languages round in the same way the following number:6.404999999999999
When I use PHP round I get: 6.41
, but when I trying to round with Javascript I always get 6.40
My Javascript attempts:
Attempt #1:
module.exports = function round (value, precision, mode) {
var m, f, isHalf, sgn // helper variables
// making sure precision is integer
precision |= 0
m = Math.pow(10, precision)
value *= m
// sign of the number
sgn = (value > 0) | -(value < 0)
isHalf = value % 1 === 0.5 * sgn
f = Math.floor(value)
if (isHalf) {
switch (mode) {
case 'PHP_ROUND_HALF_DOWN':
// rounds .5 toward zero
value = f + (sgn < 0)
break
case 'PHP_ROUND_HALF_EVEN':
// rouds .5 towards the next even integer
value = f + (f % 2 * sgn)
break
case 'PHP_ROUND_HALF_ODD':
// rounds .5 towards the next odd integer
value = f + !(f % 2)
break
default:
// rounds .5 away from zero
value = f + (sgn > 0)
}
}
return (isHalf ? value : Math.round(value)) / m
}
Extracted from: http://locutus.io/php/math/round/
Attempt #2:
round(decimal: number, decimalPoints: number): number{
let roundedValue = Math.round(decimal * Math.pow(10, decimalPoints)) / Math.pow(10, decimalPoints);
console.log(`Rounded ${decimal} to ${roundedValue}`);
return roundedValue;
}
Extracted from: https://stackoverflow.com/a/50918962/4359029
I tried with other solutions... but without success.
Could someone tell me how to get the rounding of Javascript to act like PHP's?
Could you tell me why they work in different ways in the case I explain?
javascript php math rounding
add a comment |
I'm trying to round a float number in Javascript in the same way that I do it in PHP; but I can not make both languages round in the same way the following number:6.404999999999999
When I use PHP round I get: 6.41
, but when I trying to round with Javascript I always get 6.40
My Javascript attempts:
Attempt #1:
module.exports = function round (value, precision, mode) {
var m, f, isHalf, sgn // helper variables
// making sure precision is integer
precision |= 0
m = Math.pow(10, precision)
value *= m
// sign of the number
sgn = (value > 0) | -(value < 0)
isHalf = value % 1 === 0.5 * sgn
f = Math.floor(value)
if (isHalf) {
switch (mode) {
case 'PHP_ROUND_HALF_DOWN':
// rounds .5 toward zero
value = f + (sgn < 0)
break
case 'PHP_ROUND_HALF_EVEN':
// rouds .5 towards the next even integer
value = f + (f % 2 * sgn)
break
case 'PHP_ROUND_HALF_ODD':
// rounds .5 towards the next odd integer
value = f + !(f % 2)
break
default:
// rounds .5 away from zero
value = f + (sgn > 0)
}
}
return (isHalf ? value : Math.round(value)) / m
}
Extracted from: http://locutus.io/php/math/round/
Attempt #2:
round(decimal: number, decimalPoints: number): number{
let roundedValue = Math.round(decimal * Math.pow(10, decimalPoints)) / Math.pow(10, decimalPoints);
console.log(`Rounded ${decimal} to ${roundedValue}`);
return roundedValue;
}
Extracted from: https://stackoverflow.com/a/50918962/4359029
I tried with other solutions... but without success.
Could someone tell me how to get the rounding of Javascript to act like PHP's?
Could you tell me why they work in different ways in the case I explain?
javascript php math rounding
1
This might be because PHP does have an accurate binary representation of the number and knows that the number is actually6.405
but is unable to display it accurately in decimal. this is a good read about this the problem is that in all likelyhood when you send the decimal representation of that number to JavaScript the accurate binary representation is lost and JavaScript has to work with noisy data. I doubt there is anything to do other than send the ops to JavaScript and have it do the calculation from scratch
– apokryfos
Nov 23 '18 at 16:59
add a comment |
I'm trying to round a float number in Javascript in the same way that I do it in PHP; but I can not make both languages round in the same way the following number:6.404999999999999
When I use PHP round I get: 6.41
, but when I trying to round with Javascript I always get 6.40
My Javascript attempts:
Attempt #1:
module.exports = function round (value, precision, mode) {
var m, f, isHalf, sgn // helper variables
// making sure precision is integer
precision |= 0
m = Math.pow(10, precision)
value *= m
// sign of the number
sgn = (value > 0) | -(value < 0)
isHalf = value % 1 === 0.5 * sgn
f = Math.floor(value)
if (isHalf) {
switch (mode) {
case 'PHP_ROUND_HALF_DOWN':
// rounds .5 toward zero
value = f + (sgn < 0)
break
case 'PHP_ROUND_HALF_EVEN':
// rouds .5 towards the next even integer
value = f + (f % 2 * sgn)
break
case 'PHP_ROUND_HALF_ODD':
// rounds .5 towards the next odd integer
value = f + !(f % 2)
break
default:
// rounds .5 away from zero
value = f + (sgn > 0)
}
}
return (isHalf ? value : Math.round(value)) / m
}
Extracted from: http://locutus.io/php/math/round/
Attempt #2:
round(decimal: number, decimalPoints: number): number{
let roundedValue = Math.round(decimal * Math.pow(10, decimalPoints)) / Math.pow(10, decimalPoints);
console.log(`Rounded ${decimal} to ${roundedValue}`);
return roundedValue;
}
Extracted from: https://stackoverflow.com/a/50918962/4359029
I tried with other solutions... but without success.
Could someone tell me how to get the rounding of Javascript to act like PHP's?
Could you tell me why they work in different ways in the case I explain?
javascript php math rounding
I'm trying to round a float number in Javascript in the same way that I do it in PHP; but I can not make both languages round in the same way the following number:6.404999999999999
When I use PHP round I get: 6.41
, but when I trying to round with Javascript I always get 6.40
My Javascript attempts:
Attempt #1:
module.exports = function round (value, precision, mode) {
var m, f, isHalf, sgn // helper variables
// making sure precision is integer
precision |= 0
m = Math.pow(10, precision)
value *= m
// sign of the number
sgn = (value > 0) | -(value < 0)
isHalf = value % 1 === 0.5 * sgn
f = Math.floor(value)
if (isHalf) {
switch (mode) {
case 'PHP_ROUND_HALF_DOWN':
// rounds .5 toward zero
value = f + (sgn < 0)
break
case 'PHP_ROUND_HALF_EVEN':
// rouds .5 towards the next even integer
value = f + (f % 2 * sgn)
break
case 'PHP_ROUND_HALF_ODD':
// rounds .5 towards the next odd integer
value = f + !(f % 2)
break
default:
// rounds .5 away from zero
value = f + (sgn > 0)
}
}
return (isHalf ? value : Math.round(value)) / m
}
Extracted from: http://locutus.io/php/math/round/
Attempt #2:
round(decimal: number, decimalPoints: number): number{
let roundedValue = Math.round(decimal * Math.pow(10, decimalPoints)) / Math.pow(10, decimalPoints);
console.log(`Rounded ${decimal} to ${roundedValue}`);
return roundedValue;
}
Extracted from: https://stackoverflow.com/a/50918962/4359029
I tried with other solutions... but without success.
Could someone tell me how to get the rounding of Javascript to act like PHP's?
Could you tell me why they work in different ways in the case I explain?
javascript php math rounding
javascript php math rounding
edited Nov 24 '18 at 9:01
tomloprod
asked Nov 23 '18 at 16:36
tomloprodtomloprod
4,22443148
4,22443148
1
This might be because PHP does have an accurate binary representation of the number and knows that the number is actually6.405
but is unable to display it accurately in decimal. this is a good read about this the problem is that in all likelyhood when you send the decimal representation of that number to JavaScript the accurate binary representation is lost and JavaScript has to work with noisy data. I doubt there is anything to do other than send the ops to JavaScript and have it do the calculation from scratch
– apokryfos
Nov 23 '18 at 16:59
add a comment |
1
This might be because PHP does have an accurate binary representation of the number and knows that the number is actually6.405
but is unable to display it accurately in decimal. this is a good read about this the problem is that in all likelyhood when you send the decimal representation of that number to JavaScript the accurate binary representation is lost and JavaScript has to work with noisy data. I doubt there is anything to do other than send the ops to JavaScript and have it do the calculation from scratch
– apokryfos
Nov 23 '18 at 16:59
1
1
This might be because PHP does have an accurate binary representation of the number and knows that the number is actually
6.405
but is unable to display it accurately in decimal. this is a good read about this the problem is that in all likelyhood when you send the decimal representation of that number to JavaScript the accurate binary representation is lost and JavaScript has to work with noisy data. I doubt there is anything to do other than send the ops to JavaScript and have it do the calculation from scratch– apokryfos
Nov 23 '18 at 16:59
This might be because PHP does have an accurate binary representation of the number and knows that the number is actually
6.405
but is unable to display it accurately in decimal. this is a good read about this the problem is that in all likelyhood when you send the decimal representation of that number to JavaScript the accurate binary representation is lost and JavaScript has to work with noisy data. I doubt there is anything to do other than send the ops to JavaScript and have it do the calculation from scratch– apokryfos
Nov 23 '18 at 16:59
add a comment |
3 Answers
3
active
oldest
votes
You can use toPrecision Function
It will rounded by the precision
provided. Here I rounded by 4
to get 6.405
and then rounded by 3
to get 6.41
parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3);
console.log(parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3));
add a comment |
You could do it like this:
function roundToXDigits(value, digits)
{
if (!digits) {
digits = 2;
}
value = value * Math.pow(10, digits);
value = Math.round(value);
value = value / Math.pow(10, digits);
return value
}
var num = roundToXDigits(6.404999999999999, 3); //creates 6.405
console.log(roundToXDigits(num, 2)); //creates 6.41
The problem is, JavaScript technically isn't wrong. 6.4049 -> becomes 6.405 when you round (which, to 2dp is 6.40) which is why it's not working as expected. You have to run the function twice to round 405 -> 41.
Source: JavaScript math, round to two decimal places
^^ extension usage of Bryce's answer.
@tomloprod no prob, hope it helps :)
– treyBake
Nov 23 '18 at 16:54
treyBake Works well! I think it's similar to @C2486 answer. Guys, what solution do you think is the best?
– tomloprod
Nov 23 '18 at 17:08
@tomloprod : Its always good to explore any method deeply, but the best practice is to use inbuilt method provided by any language or framework. Its good to see detail code oftoPrecision
asroundToXDigits
.thisroundToXDigits
method would be great if the inbuilt method is not supported by any version of browser.
– C2486
Nov 23 '18 at 17:13
add a comment |
You might try
console.log(Number(n.toFixed(3)).toFixed(2));
eg.
var n = 6.404999999999999;
console.log(n.toFixed(2)); //=> 6.40
console.log(n.toFixed(3)); //=> 6.405
Have you read the question?
– Roko C. Buljan
Nov 23 '18 at 16:58
@RokoC.Buljan, There is a fundamental difference between the round method in PHP and javascript. But according the basic definition of the round functionality, the values are equal to results of JavaScript.
– Chameera
Nov 23 '18 at 17:14
How about this,console.log(Number(n.toFixed(3)).toFixed(2));
– Chameera
Nov 23 '18 at 17:19
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450248%2fhow-to-round-in-javascript-like-php-do%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use toPrecision Function
It will rounded by the precision
provided. Here I rounded by 4
to get 6.405
and then rounded by 3
to get 6.41
parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3);
console.log(parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3));
add a comment |
You can use toPrecision Function
It will rounded by the precision
provided. Here I rounded by 4
to get 6.405
and then rounded by 3
to get 6.41
parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3);
console.log(parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3));
add a comment |
You can use toPrecision Function
It will rounded by the precision
provided. Here I rounded by 4
to get 6.405
and then rounded by 3
to get 6.41
parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3);
console.log(parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3));
You can use toPrecision Function
It will rounded by the precision
provided. Here I rounded by 4
to get 6.405
and then rounded by 3
to get 6.41
parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3);
console.log(parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3));
console.log(parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3));
console.log(parseFloat((6.404999999999999).toPrecision(4)).toPrecision(3));
edited Nov 23 '18 at 17:08
answered Nov 23 '18 at 17:01
C2486C2486
19.1k32767
19.1k32767
add a comment |
add a comment |
You could do it like this:
function roundToXDigits(value, digits)
{
if (!digits) {
digits = 2;
}
value = value * Math.pow(10, digits);
value = Math.round(value);
value = value / Math.pow(10, digits);
return value
}
var num = roundToXDigits(6.404999999999999, 3); //creates 6.405
console.log(roundToXDigits(num, 2)); //creates 6.41
The problem is, JavaScript technically isn't wrong. 6.4049 -> becomes 6.405 when you round (which, to 2dp is 6.40) which is why it's not working as expected. You have to run the function twice to round 405 -> 41.
Source: JavaScript math, round to two decimal places
^^ extension usage of Bryce's answer.
@tomloprod no prob, hope it helps :)
– treyBake
Nov 23 '18 at 16:54
treyBake Works well! I think it's similar to @C2486 answer. Guys, what solution do you think is the best?
– tomloprod
Nov 23 '18 at 17:08
@tomloprod : Its always good to explore any method deeply, but the best practice is to use inbuilt method provided by any language or framework. Its good to see detail code oftoPrecision
asroundToXDigits
.thisroundToXDigits
method would be great if the inbuilt method is not supported by any version of browser.
– C2486
Nov 23 '18 at 17:13
add a comment |
You could do it like this:
function roundToXDigits(value, digits)
{
if (!digits) {
digits = 2;
}
value = value * Math.pow(10, digits);
value = Math.round(value);
value = value / Math.pow(10, digits);
return value
}
var num = roundToXDigits(6.404999999999999, 3); //creates 6.405
console.log(roundToXDigits(num, 2)); //creates 6.41
The problem is, JavaScript technically isn't wrong. 6.4049 -> becomes 6.405 when you round (which, to 2dp is 6.40) which is why it's not working as expected. You have to run the function twice to round 405 -> 41.
Source: JavaScript math, round to two decimal places
^^ extension usage of Bryce's answer.
@tomloprod no prob, hope it helps :)
– treyBake
Nov 23 '18 at 16:54
treyBake Works well! I think it's similar to @C2486 answer. Guys, what solution do you think is the best?
– tomloprod
Nov 23 '18 at 17:08
@tomloprod : Its always good to explore any method deeply, but the best practice is to use inbuilt method provided by any language or framework. Its good to see detail code oftoPrecision
asroundToXDigits
.thisroundToXDigits
method would be great if the inbuilt method is not supported by any version of browser.
– C2486
Nov 23 '18 at 17:13
add a comment |
You could do it like this:
function roundToXDigits(value, digits)
{
if (!digits) {
digits = 2;
}
value = value * Math.pow(10, digits);
value = Math.round(value);
value = value / Math.pow(10, digits);
return value
}
var num = roundToXDigits(6.404999999999999, 3); //creates 6.405
console.log(roundToXDigits(num, 2)); //creates 6.41
The problem is, JavaScript technically isn't wrong. 6.4049 -> becomes 6.405 when you round (which, to 2dp is 6.40) which is why it's not working as expected. You have to run the function twice to round 405 -> 41.
Source: JavaScript math, round to two decimal places
^^ extension usage of Bryce's answer.
You could do it like this:
function roundToXDigits(value, digits)
{
if (!digits) {
digits = 2;
}
value = value * Math.pow(10, digits);
value = Math.round(value);
value = value / Math.pow(10, digits);
return value
}
var num = roundToXDigits(6.404999999999999, 3); //creates 6.405
console.log(roundToXDigits(num, 2)); //creates 6.41
The problem is, JavaScript technically isn't wrong. 6.4049 -> becomes 6.405 when you round (which, to 2dp is 6.40) which is why it's not working as expected. You have to run the function twice to round 405 -> 41.
Source: JavaScript math, round to two decimal places
^^ extension usage of Bryce's answer.
edited Nov 23 '18 at 16:54
answered Nov 23 '18 at 16:52
treyBaketreyBake
3,24531035
3,24531035
@tomloprod no prob, hope it helps :)
– treyBake
Nov 23 '18 at 16:54
treyBake Works well! I think it's similar to @C2486 answer. Guys, what solution do you think is the best?
– tomloprod
Nov 23 '18 at 17:08
@tomloprod : Its always good to explore any method deeply, but the best practice is to use inbuilt method provided by any language or framework. Its good to see detail code oftoPrecision
asroundToXDigits
.thisroundToXDigits
method would be great if the inbuilt method is not supported by any version of browser.
– C2486
Nov 23 '18 at 17:13
add a comment |
@tomloprod no prob, hope it helps :)
– treyBake
Nov 23 '18 at 16:54
treyBake Works well! I think it's similar to @C2486 answer. Guys, what solution do you think is the best?
– tomloprod
Nov 23 '18 at 17:08
@tomloprod : Its always good to explore any method deeply, but the best practice is to use inbuilt method provided by any language or framework. Its good to see detail code oftoPrecision
asroundToXDigits
.thisroundToXDigits
method would be great if the inbuilt method is not supported by any version of browser.
– C2486
Nov 23 '18 at 17:13
@tomloprod no prob, hope it helps :)
– treyBake
Nov 23 '18 at 16:54
@tomloprod no prob, hope it helps :)
– treyBake
Nov 23 '18 at 16:54
treyBake Works well! I think it's similar to @C2486 answer. Guys, what solution do you think is the best?
– tomloprod
Nov 23 '18 at 17:08
treyBake Works well! I think it's similar to @C2486 answer. Guys, what solution do you think is the best?
– tomloprod
Nov 23 '18 at 17:08
@tomloprod : Its always good to explore any method deeply, but the best practice is to use inbuilt method provided by any language or framework. Its good to see detail code of
toPrecision
as roundToXDigits
.this roundToXDigits
method would be great if the inbuilt method is not supported by any version of browser.– C2486
Nov 23 '18 at 17:13
@tomloprod : Its always good to explore any method deeply, but the best practice is to use inbuilt method provided by any language or framework. Its good to see detail code of
toPrecision
as roundToXDigits
.this roundToXDigits
method would be great if the inbuilt method is not supported by any version of browser.– C2486
Nov 23 '18 at 17:13
add a comment |
You might try
console.log(Number(n.toFixed(3)).toFixed(2));
eg.
var n = 6.404999999999999;
console.log(n.toFixed(2)); //=> 6.40
console.log(n.toFixed(3)); //=> 6.405
Have you read the question?
– Roko C. Buljan
Nov 23 '18 at 16:58
@RokoC.Buljan, There is a fundamental difference between the round method in PHP and javascript. But according the basic definition of the round functionality, the values are equal to results of JavaScript.
– Chameera
Nov 23 '18 at 17:14
How about this,console.log(Number(n.toFixed(3)).toFixed(2));
– Chameera
Nov 23 '18 at 17:19
add a comment |
You might try
console.log(Number(n.toFixed(3)).toFixed(2));
eg.
var n = 6.404999999999999;
console.log(n.toFixed(2)); //=> 6.40
console.log(n.toFixed(3)); //=> 6.405
Have you read the question?
– Roko C. Buljan
Nov 23 '18 at 16:58
@RokoC.Buljan, There is a fundamental difference between the round method in PHP and javascript. But according the basic definition of the round functionality, the values are equal to results of JavaScript.
– Chameera
Nov 23 '18 at 17:14
How about this,console.log(Number(n.toFixed(3)).toFixed(2));
– Chameera
Nov 23 '18 at 17:19
add a comment |
You might try
console.log(Number(n.toFixed(3)).toFixed(2));
eg.
var n = 6.404999999999999;
console.log(n.toFixed(2)); //=> 6.40
console.log(n.toFixed(3)); //=> 6.405
You might try
console.log(Number(n.toFixed(3)).toFixed(2));
eg.
var n = 6.404999999999999;
console.log(n.toFixed(2)); //=> 6.40
console.log(n.toFixed(3)); //=> 6.405
var n = 6.404999999999999;
console.log(n.toFixed(2)); //=> 6.40
console.log(n.toFixed(3)); //=> 6.405
var n = 6.404999999999999;
console.log(n.toFixed(2)); //=> 6.40
console.log(n.toFixed(3)); //=> 6.405
edited Nov 25 '18 at 7:37
answered Nov 23 '18 at 16:51
ChameeraChameera
628
628
Have you read the question?
– Roko C. Buljan
Nov 23 '18 at 16:58
@RokoC.Buljan, There is a fundamental difference between the round method in PHP and javascript. But according the basic definition of the round functionality, the values are equal to results of JavaScript.
– Chameera
Nov 23 '18 at 17:14
How about this,console.log(Number(n.toFixed(3)).toFixed(2));
– Chameera
Nov 23 '18 at 17:19
add a comment |
Have you read the question?
– Roko C. Buljan
Nov 23 '18 at 16:58
@RokoC.Buljan, There is a fundamental difference between the round method in PHP and javascript. But according the basic definition of the round functionality, the values are equal to results of JavaScript.
– Chameera
Nov 23 '18 at 17:14
How about this,console.log(Number(n.toFixed(3)).toFixed(2));
– Chameera
Nov 23 '18 at 17:19
Have you read the question?
– Roko C. Buljan
Nov 23 '18 at 16:58
Have you read the question?
– Roko C. Buljan
Nov 23 '18 at 16:58
@RokoC.Buljan, There is a fundamental difference between the round method in PHP and javascript. But according the basic definition of the round functionality, the values are equal to results of JavaScript.
– Chameera
Nov 23 '18 at 17:14
@RokoC.Buljan, There is a fundamental difference between the round method in PHP and javascript. But according the basic definition of the round functionality, the values are equal to results of JavaScript.
– Chameera
Nov 23 '18 at 17:14
How about this,
console.log(Number(n.toFixed(3)).toFixed(2));
– Chameera
Nov 23 '18 at 17:19
How about this,
console.log(Number(n.toFixed(3)).toFixed(2));
– Chameera
Nov 23 '18 at 17:19
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450248%2fhow-to-round-in-javascript-like-php-do%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
This might be because PHP does have an accurate binary representation of the number and knows that the number is actually
6.405
but is unable to display it accurately in decimal. this is a good read about this the problem is that in all likelyhood when you send the decimal representation of that number to JavaScript the accurate binary representation is lost and JavaScript has to work with noisy data. I doubt there is anything to do other than send the ops to JavaScript and have it do the calculation from scratch– apokryfos
Nov 23 '18 at 16:59