JavaScript简单求和错误



我正在尝试简单地求和10个数字元素。
我得到一个完全不正确的结果,这仅在某些值的数组中发生,否则效果很好。

var sum = 0;
var values = [14, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4];
for (var i = 0; i < values.length; i++) {
  var v = values[i];
  sum += v;
}
console.log(sum);

预期的结果是0,但我奇怪地-2.22!
在其他时候,我的十进制位置如此之多,我不得不汇总。
但是在这种情况下,使用这些数字,这种错误是荒谬的。

您的代码工作正常,这与浮子的不精确有关。当您在进行计算之前,当您将每个值多乘以10(SO 1.4变为14)时,最终结果为0。

另请参见如何处理JavaScript中的浮点数精度?

var sum = 0;
var values = [14, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4, -1.4];
for(var i=0; i<values.length; i++){
    var v = values[i];
    sum += (v * 10);
}
sum = sum / 10;
console.log(sum);

console.log(1.3999999999999977 + -1.4);

最后,由于您在上述表达式上操作的精确损失,这相当于2.2 * 10^(-15),这是您沿途获得的精确损失

最新更新