注意 - 我已经阅读了有关parseFloat()的其他帖子,但是我没有找到解释问题的原因。 (或者我只是不明白)。
此代码......
var sum = parseFloat("1.001") + parseFloat(".001");
alert(parseFloat(sum));
输出......
1.0019999999999998
我读过添加sum.toFixed(2)
只会包含2个小数点。
但是,我并不完全理解为什么会出现这个长小数。
parseFloat(sum)
代表二进制文件中的sum
吗?如果是这样,那么1.001不能用二进制表示,因为1/2 ^ x + ...永远不能完全等于.001或1/1000?
答案 0 :(得分:2)
这不是特定于Javascript,而是内部表示导致精度错误的IEEE Floating Point Numbers。
我不会在这里重现这些内容,但是有很多资源可以帮助解释你的例子中发生了什么。