可能重复:
Is JavaScript’s Floating-Point Math Broken?地理解JavaScript parseFloat行为
注意 - 我已经在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。
感谢你的链接 –