了解Javascript parseFloat行为

时间:2012-12-08 03:50:37

标签: javascript parsefloat

  

可能重复:
  Is JavaScript’s Floating-Point Math Broken?

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

1 个答案:

答案 0 :(得分:2)

这不是特定于Javascript,而是内部表示导致精度错误的IEEE Floating Point Numbers

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

这是一个:http://www.petebecker.com/js/js200006.html