Tell us what’s happening:
For some reason, in my loop i subtract moniesValue from changeValue
which is 76.74 - 20
yet it returns 56.7399999999 which causes errors
Why is this happening…
As you can see i even printed values to console, with the sum and even there it sums it wrong
Your code so far
function checkCashRegister(price, cash, cid) {
var change = {
status: "",
change: []
};
let changeValue = Math.abs(price - cash);
console.log(changeValue);
let moniesValue = [.01, .05, .1, .25, 1, 5, 10, 20, 100 ];
let moniesName = ["PENNY", "NICKEL", "DIME", "QUARTER", "ONE", "FIVE", "TEN", "TWENTY", "ONE HUNDRED"];
let moniesAmt = [0,0,0,0,0,0,0,0,0];
if(moniesAmt.reduce((sum, item) => {sum + item}) == price){
change.change = cid;
change.status = "CLOSED"
return change;
}
//assign values
for(let x = 0; x < cid.length; x++){
if(moniesName[x] == cid[x][0]){
moniesAmt[x] = cid[x][1];
}
}
let bool = false;
for(let x = moniesName.length - 1; x >= 0; x--){
bool == false;
//console.log(changeValue + " moniesAmt of x: " + moniesAmt[x])
while(changeValue >= moniesValue[x] && moniesAmt[x] != 0 && moniesAmt[x] - moniesValue[x] >= 0 && changeValue != 0){
console.log("changeValue: " + changeValue + " moniesValue[x]: " + moniesValue[x] + " sum: " + (changeValue - moniesValue[x]))
moniesAmt[x] -= moniesValue[x];
changeValue -= moniesValue[x];
if(bool == false){
// console.log("sssssssss")
bool = true;
change.change.unshift([moniesName[x], moniesValue[x]])
}else {
change.change[0][1] += moniesValue[x];
//console.log(change.change)
}
}
}
console.log("pre insufficient check: " + changeValue)
//if there wasn't enough in register
if(changeValue != 0){
change.change = []
change.status = "INSUFFICIENT_FUNDS"
}else {
change.status = "OPEN";
}
console.log(change)
return change;
}//
//checkCashRegister(19.5, 20, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]);
checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100] ])
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
.
Challenge: Cash Register
Link to the challenge: