如何使用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);