【问题标题】:Understanding Javascript parseFloat Behavior [duplicate]了解 Javascript parseFloat 行为 [重复]
【发布时间】:2012-12-08 03:50:37
【问题描述】:

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

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

【问题讨论】:

    标签: javascript parsefloat


    【解决方案1】:

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

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

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

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2019-01-08
    • 2020-03-27
    • 2018-04-01
    • 1970-01-01
    相关资源
    最近更新 更多