繁体   English   中英

Javascript浮点数加法

[英]Javascript floating point number addition

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中的值精度有关。 但是有人可以解释吗?

没有什么特别要解释的。 IEEE-754双精度数字不是十进制的完全精确的数字。 可能会渗入一些小错误。要获得完整的十进制精度(您应注意,不能完全代表三分之一),则需要使用为此设计的类型。 (JavaScript没有内置代码;其他语言的示例是Java的BigDecimal或C#的decimal 。)

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

0.1 + 0.2 = 0.30000000000000004

这是Crockford的最爱之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM