可能的重复:
JavaScript 的浮点数学被破坏了吗?
注意 - 我已经阅读了 parseFloat() 上的其他帖子,但我没有找到一个很好的解释来解释为什么会出现问题。(或者我只是不明白)。
这段代码...
var sum = parseFloat("1.001") + parseFloat(".001");
alert(parseFloat(sum));
输出...
1.0019999999999998
我读过添加sum.toFixed(2)
将仅包含 2 个小数点。
但是,我不是 100% 理解为什么会出现这种长小数。
是否以二进制parseFloat(sum)
表示?sum
如果是这样,那么 1.001 不能用二进制表示,因为 1/2^x + ... 永远不能完全等于 .001 或 1/1000?