Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript验证数组元素净和为零_Javascript_Arrays_Sum_Parsefloat - Fatal编程技术网

Javascript验证数组元素净和为零

Javascript验证数组元素净和为零,javascript,arrays,sum,parsefloat,Javascript,Arrays,Sum,Parsefloat,我需要验证数组网络中元素的和是否为零。数组可以包含正值或负值。 阵列元素为1164.44、-2919.422500.59、-5197.154451.54 我不使用toFixed的代码是 var v_total=0; var v; var varray = document.getElementsByName('f02'); for (var i = 0; i < varray.length; i++) { v = (isNaN(parseFl

我需要验证数组网络中元素的和是否为零。数组可以包含正值或负值。 阵列元素为1164.44、-2919.422500.59、-5197.154451.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 询问如何解决此问题的任何建议


谢谢

这很好用,有什么问题吗

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);

jsidle here:

您可以使用reduce和toPrecision:

var-arr=[1164.44,-2919.42042500.5904,-5197.1514451.541]; var result=arr.reducefunctiona,b{return+a.toPrecision15++b.toPrecision15};
结果;你可以做一个Math.ceil/floor/round,测试原始结果的结果是否小于0.1谢谢你的建议。您还可以使用加号前缀:var arr=[1164.44,-2919.422500.59,-5197.154451.54];arr.reducefunctiona,b{return+a.toFixed2++b.toFixed2}vlaues是在一个文本中输入的,该文本是一个数组,它是可编辑的。当我输入整数或大负数而不是加法时,尽管使用了parseFloat,我还是得到了元素的串联。v_total+=parseFloatvarray[i].value.toFixed2;console.logv_总计;谢谢你,约翰,前面的+符号成功了。现在数字加起来了,但是我不能总是确定小数点后有两位数字。例如,5.468,-5.47不等于零,如果小数点后的数字不同,我如何计算toFixed?@RJD使用Number.prototype.toPrecision以您喜欢的精度计算。[5.468,-5.47]。reducefunctiona,b{return+a.toPrecision15++b.toPrecision15}您必须在此处设置15这样的精度,并验证用户添加的数字在本例中不大于您的参数15。@RJD我添加了一个带有Number.prototype.toprecision的答案谢谢Johann的建议,也谢谢您介绍我减少函数…我实现了您的solution@RJD我很高兴能帮上忙。你接受了另一个答案,但向上投票没有坏处: