次の配列があります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
アフタードット値がスキップされているようです。正しく追加されていることを確認するにはどうすればよいですか?
数値強制関数(例)を実行する必要はありません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
小数部分を保持するparseFloat()
代わりに使用parseInt()
for (var i= 0; i< total.length; i++) {
totalNo += parseFloat(total[i]);
}
注 1: +(total[i]) を記述する必要はありません
注 2: Utkanos が指摘したように、配列値に浮動小数点値のみが含まれている場合、parseFloat は必要ありません。
ここでは、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]よりも遅いことに常に注意してください