如何将循环中的数组总量相加?

时间:2016-08-27 08:19:15

标签: javascript loops

如何使用Ajax对数组中返回的总量进行求和?

还有其他方法来计算金额为.000的总和吗?

示例:

 for (i = 0; i < data.RecordCount; i++) {

 totalBetAmount += parseFloat(data.Records[i].betAmount);

结果: 0.22130000001

5 个答案:

答案 0 :(得分:0)

只是围绕小数点:

Math.round();

答案 1 :(得分:0)

试试这样。

//this will be total sum of all numbers
var totalSum = (data.Records || []).reduce(function(total, num){
    return parseFloat(total) + parseFloat(num);
});
//now you can do what you want using ParseInt or toFixed...

//convert to INT
totalSum = parseInt(totalSum);

//leave just 2 numbers after decimal like 1.12
totalSum = totalSum.toFixed(2);

希望这有帮助。

答案 2 :(得分:0)

如果你使用ES6(ECMAScript 2015),你可以使用reduce函数(Great video tutorial来学习reduce)

这是一个简单的例子:

var yourArray = [50, 60, 70, 100, 20]
var sum = yourArray.reduce((a, b) => a + b, 0);
console.log(sum); //Returns: 300

答案 3 :(得分:0)

这种不准确的原因是许多数字在浮点中没有精确的表示,这是JavaScript用来存储数字的。

一个实用的解决方案是将结果四舍五入到小数点后的一定小数位数,如下所示:

totalBetAmount = Math.round(totalBetAmount*100000000)/100000000;

以下是显示原始数字和舍入数字的代码段:

// Sample data
var data = {
    Records: [
        { betAmount: 0.0001 },
        { betAmount: 0.0001 },
        { betAmount: 0.0001 },
    ],
    RecordCount: 3
};    

var totalBetAmount = 0;
for (i = 0; i < data.RecordCount; i++) {
   totalBetAmount += parseFloat(data.Records[i].betAmount);
}
console.log('before:', totalBetAmount);
// round of inaccuracies, assuming decimals
totalBetAmount = Math.round(totalBetAmount*100000000)/100000000;
console.log('after:', totalBetAmount);

答案 4 :(得分:0)

我不熟悉Ajax,但这可能是帮助:

var arr = [5.33655,6.6655,9.554];
var sum = 0;
for (var i = 0 ; i < arr.length ; i++) {
  sum += arr[i] 
};
console.log(sum.toFixed(3));