我需要验证我的数组网元素的总和为零。该数组可以包含正值或负值。 数组元素是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 如果我使用calc添加它,它会净到零 搜索论坛并了解它是浮动数字的行为。 尽管使用toFixed,我无法得到零和。小数点后的位数也可能不同,并不总是2 请求有关如何解决此问题的任何建议
由于
答案 0 :(得分: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/
答案 1 :(得分:0)
您可以使用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);
&#13;