gpt4 book ai didi

javascript - 使用reduce获取对象值的总和,但答案少了几个小数(JS)

转载 作者:行者123 更新时间:2023-12-03 02:23:49 24 4
gpt4 key购买 nike

我有以下代码:

function checkCashRegister(price, cash, cid) {

// Move cid into an object
var cashReg = cid.reduce(function(prev, curr) {
prev[curr[0]] = curr[1];
return prev;
}, {});

// Total money in the register
var regSum = Object.values(cashReg).reduce(function(a, b) {
return a + b;
}, 0);

return regSum;
// --> 335,41
}

checkCashRegister(19.50, 20.00, [
["PENNY", 1.01],
["NICKEL", 2.05],
["DIME", 3.10],
["QUARTER", 4.25],
["ONE", 90.00],
["FIVE", 55.00],
["TEN", 20.00],
["TWENTY", 60.00],
["ONE HUNDRED", 100.00]
]);

代码本身似乎工作得很好,但由于某种原因,当我返回 regSum 时,答案是 335,40999999999997 而不是 335,41。为什么会发生这种情况?我如何更改代码才能返回预期结果?

最佳答案

正如Geuis所说,这是数字精度问题。如果您期望结果只保留小数点后两位,您可以更改“return regSum;”到“返回数字(regSum.toFixed);”。函数 checkCashRegister(价格,现金,cid){

// Move cid into an object
var cashReg = cid.reduce(function(prev, curr) {
prev[curr[0]] = curr[1];
return prev;
}, {});

// Total money in the register
var regSum = Object.values(cashReg).reduce(function(a, b) {
return a + b;
}, 0);

return Number(regSum.toFixed(2));
// --> 335,41

}

关于javascript - 使用reduce获取对象值的总和,但答案少了几个小数(JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49041530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com