我有一个以下数组var total = [10, 0.25, 12.75, 1, 0];
当我这样做时:
for (var i= 0; i< total.length; i++) {
totalNo += parseInt(+(total[i]));
}
totalNo
始终是一个完整的数字。看起来跳过点值之后的.XX
。如何确保正确添加?
答案 0 :(得分:4)
使用parseFloat()
代替parseInt()
来保留小数部分
for (var i= 0; i< total.length; i++) {
totalNo += parseFloat(total[i]);
}
注1:无需写+(total [i])
注意2:正如Utkanos所指出的,如果你的数组值只包含浮点值,那么甚至不需要parseFloat
答案 1 :(得分:4)
您不需要运行任何数字强制函数(例如parseInt
) - 您的数组值已经是数字。
如果ECMA5解决方案可以接受,您可以使用reduce()
:
var arr = [10, 0.25, 12.75, 1, 0];
alert(arr.reduce(function(curr_total, val) {
return curr_total + val;
}, 0)); //24
答案 2 :(得分:0)
这里你不需要parseInt或parseFloat。如果考虑速度,对于大型阵列,使用原生循环,它会快得多!但要注意你如何编码 -
var total = [10, 0.25, 12.75, 1, 0],totalNo=0;
var len=total.length;
for(var i= 0; i<len; i++)
{
totalNo = totalNo+total[i];
}
请注意,totalNo + = total [i]慢于totalNo + total [i]