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

数値強制関数(例)を実行する必要はありません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 に答える
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 に答える
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 に答える