I was brainstorming how to solve this problem and debugging as I went and encountered the following issue - $2.05/0.05 gives me the result of 40.999999 not 41. Anyone else encountered this issue? Am I missing something? All the other formulas seem to work fine. See the code below:
function checkCashRegister(price, cash, cid) {
//define primary variables
const p = 0.01;
const n = 0.05;
const d = 0.1;
const q = 0.25;
const db1 = 1;
const db5 = 5;
const db10 = 10;
const db20 = 20;
const db100 = 100;
let change = cash - price;
let currState = {status: “”, change: };
let pRoll = 0;
let nRoll = 0;
let dRoll = 0;
let qRoll = 0;
let db1Roll = 0;
let db5Roll = 0;
let db10Roll = 0;
let db20Roll = 0;
let db100Roll = 0;
// determine # of coins and bills in drawer
for (let i = 0 ; i < cid.length; i++) {
switch ( cid[i][0]) {
case “PENNY”:
pRoll = (cid[i][1])/p;
break;
case “NICKEL”:
nRoll = (cid[i][1])/n;
break;
case “DIME”:
dRoll = (cid[i][1])/d;
break;
case “QUARTER”:
qRoll = (cid[i][1])/q;
break;
case “ONE”:
db1Roll = (cid[i][1])/db1;
break;
case “FIVE”:
db5Roll = (cid[i][1])/db5;
break;
case “TEN”:
db10Roll = (cid[i][1])/db10;
break;
case “TWENTY”:
db20Roll = (cid[i][1])/db20;
break;
case “ONE HUNDRED”:
db100Roll = (cid[i][1])/db100;
break;
}
}
console.log(pRoll);
console.log(nRoll);
console.log(dRoll);
console.log(qRoll);
console.log(db1Roll);
console.log(db5Roll);
console.log(db10Roll)
console.log(db20Roll);
console.log(db100);
return currState;
}
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]]);