我有一个以下数组var total = [10, 0.25, 12.75, 1, 0];
当我做:
for (var i= 0; i< total.length; i++) {
totalNo += parseInt(+(total[i]));
}
totalNo
总是一个完整的数字。看起来.XX
后点值被跳过了。如何确保正确添加?
我有一个以下数组var total = [10, 0.25, 12.75, 1, 0];
当我做:
for (var i= 0; i< total.length; i++) {
totalNo += parseInt(+(total[i]));
}
totalNo
总是一个完整的数字。看起来.XX
后点值被跳过了。如何确保正确添加?
使用parseFloat()
而不是parseInt()
保留小数部分
for (var i= 0; i< total.length; i++) {
totalNo += parseFloat(total[i]);
}
注意1:不需要写 +(total[i])
注意2:正如 Utkanos 所指出的,如果你的数组值只包含浮点值,那么 parseFloat 甚至没有必要
您不需要运行任何数字强制函数(例如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
您在这里不需要 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] 慢