我有一个四舍五入数字的问题。

x = 0.175;
console.log(x.toFixed(2));
// RESULT: 0.17

x = 1.175;
console.log(x.toFixed(2));
// RESULT: 1.18

x = 2.175;
console.log(x.toFixed(2));
// RESULT: 2.17


为什么(X!= 1).175不四舍五入为X.18?

最佳答案

这里的问题是0.175是二进制的重复小数(具体来说,在短前缀之后,它将稳定为重复的0011模式)。当以有限浮点表示形式表示时,此重复模式会被截断。当您将整数部分从0更改为1到2时,您每次都会在数字的整数部分添加一个额外的位,从而推后一位尾随的位。根据哪个位值被推迟,可以将舍入后的值更改为足以影响可见结果的值。请注意,在2.175之后,舍入行为的下一个更改直到8.175才会发生(在将另外两个低阶位从表示形式中移出之后)。

关于javascript - JavaScript舍入错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41227869/

10-11 20:44