1

我有一个以下数组var total = [10, 0.25, 12.75, 1, 0];

当我做:

 for (var i= 0; i< total.length; i++) {
      totalNo += parseInt(+(total[i]));
 }

totalNo总是一个完整的数字。看起来.XX后点值被跳过了。如何确保正确添加?

4

3 回答 3

4

使用parseFloat()而不是parseInt()保留小数部分

for (var i= 0; i< total.length; i++) {
      totalNo += parseFloat(total[i]);
}

注意1:不需要写 +(total[i])
注意2:正如 Utkanos 所指出的,如果你的数组值只包含浮点值,那么 parseFloat 甚至没有必要

于 2012-08-02T10:31:28.420 回答
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
于 2012-08-02T10:34:48.433 回答
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] 慢

于 2012-08-02T11:15:54.250 回答