如何使用Ajax对数组中返回的总金额求和?

还有其他方法可以计算出金额为.000的金额吗?

例:

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

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


结果:0.22130000001

最佳答案

这种错误的产生是由于许多数字在浮点数中没有确切的表示,这是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);

09-20 04:46