[英]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.