理解Javascript语法浮动行为

理解Javascript语法浮动行为,javascript,parsefloat,Javascript,Parsefloat,可能重复: 注意-我已经阅读了关于parseFloat()的其他文章,但是我没有找到一个关于问题发生原因的好解释。(或者我就是不明白) 此代码 var sum = parseFloat("1.001") + parseFloat(".001"); alert(parseFloat(sum));​ 输出 1.0019999999999998 我已经读到,添加sum.toFixed(2)将只包含2个小数点 然而,我不完全理解为什么会出现这样长的小数点 parseFloat(sum)是否用二进

可能重复:

注意-我已经阅读了关于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?

这不是特定于Javascript的,而是如何在内部表示导致精度错误的

我不会在这里重复这些内容,但是有很多资源可以帮助解释您的示例中发生了什么

这里有一个: