Javascript浮点数加法

时间:2012-01-16 22:35:13

标签: javascript floating-point

PFB说明问题的示例代码段:

        var x=0.323;
        var cumulativeVal = 0;

        for(i=0;i<30;i++){
                   cumulativeVal = cumulativeVal + x;
                   console.log(cumulativeVal);
        }

上述计算的结果是

  0.323
  0.646
  0.9690000000000001
  1.292
  1.615....
  4.845000000000001
  5.168000000000001
  5.491000000000001
  5.814000000000002....
  9.690000000000007

请注意,会添加额外的十进制值。我明白这与javascript中的值精度有关。但任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:4)

没有什么特别需要解释的。 IEEE-754 double-precision numbers在十进制方面并不完全精确。小错误可能会蔓延。对于完整的小数精度(您应该注意,它不能完美地代表三分之一),您需要使用为此设计的类型。 (JavaScript没有内置的;其他语言的示例来自Java的BigDecimal或来自C#的decimal。)

顺便提一下,有一个更简单的例子:

0.1 + 0.2 = 0.30000000000000004

这是Crockford's收藏夹之一。