0

我需要验证我的数组 net 的元素之和为零。该数组可以包含正值或负值。数组元素是 1164.44,-2919.42,2500.59,-5197.15,4451.54 我没有使用 toFixed 的代码是

    var v_total=0;
   var v;
   var varray  = document.getElementsByName('f02');
   for (var i = 0; i < varray.length; i++)
   {

      v = (isNaN(parseFloat(varray[i].value)))?0:varray[i].value;
     v_total = parseFloat(cv_total) + parseFloat(v);

   }

    v_total = (isNaN(cv_total))?0:cv_total;

结果是总和 9.094947017729282e-13 如果我使用计算添加它,它确实为零。搜索论坛并了解它是浮点数的行为。尽管使用了 toFixed,但我无法得到总和为零。此外,小数点后的位数可能会有所不同,并不总是 2 请求有关如何解决此问题的任何建议

谢谢

4

2 回答 2

1

您可以使用 reduce() 和 toPrecision():

    var arr =[1164.44,-2919.4204,2500.5904,-5197.151,4451.541]; 
    var result = arr.reduce(function(a, b){ return +a.toPrecision(15) + +b.toPrecision(15) });
    alert(result);

于 2014-09-28T07:38:04.610 回答
0

这工作正常,似乎是什么问题?

var n=[1164.44,-2919.42,2500.59,-5197.15,4451.54];
s=n.reduce(function(x,y) {
    return parseFloat((x+y).toFixed(2));
});
console.log(s);

JSFiddle在这里:http: //jsfiddle.net/91g4qb0z/

于 2014-09-28T07:02:57.860 回答