Tell us what’s happening:
Between my codes, i am keep getting wrong value for my “dif variable”. Codes should make it integer(at leats two digits after the comma) but they are making decimal. That creates error. How can i make it ?
Thanks for all attention.
**Your code so far**
function checkCashRegister(price, cash, cid) {
let dif = cash - price;
let arr = [];
let result = {};
let total = 0;
for(let i = 0; i < cid.length; i++){
total += cid[i][1];
}
let check = price + total === cash;
if(dif >= 100){
if(dif >= cid[8][1]){dif -= cid[8][1]; arr.unshift(cid[8]);}
else{cid[8][1] -= dif - (dif % 100); dif = dif % 100; arr.unshift(cid[8]);}}
else{cid[8][1] = 0; arr.unshift(cid[8]);}
if(dif >= 20){
if(dif >= cid[7][1]){dif -= cid[7][1]; arr.unshift(cid[7]);}
else{cid[7][1] -= dif - (dif % 100); dif = dif % 100; arr.unshift(cid[7]);}}
else{cid[7][1] = 0; arr.unshift(cid[7]);}
if(dif >= 10){
if(dif >= cid[6][1]){dif -= cid[6][1]; arr.unshift(cid[6]);}
else{cid[6][1] = Math.floor(dif/10) * 10; dif -= cid[6][1]; arr.unshift(cid[6]);}}
else{cid[6][1] = 0; arr.unshift(cid[6]);}
if(dif >= 5){
if(dif >= cid[5][1]){dif -= cid[5][1]; arr.unshift(cid[5]);}
else{cid[5][1] = Math.floor(dif/5) * 5; dif -= cid[5][1]; arr.unshift(cid[5]);}}
else{cid[5][1] = 0; arr.unshift(cid[5]);}
if(dif >= 1){
if(dif >= cid[4][1]){dif -= cid[4][1]; arr.unshift(cid[4]);}
else{cid[4][1] = Math.floor(dif/1) * 1; dif -= cid[4][1]; arr.unshift(cid[4]);}}
else{cid[4][1] = 0; arr.unshift(cid[4]);}
if(dif >= 0.25){
if(dif >= cid[3][1]){dif -= cid[3][1]; arr.unshift(cid[3]);}
else{cid[3][1] = Math.floor(dif/0.25) * 0.25; dif -= cid[3][1]; arr.unshift(cid[3]);}}
else{cid[3][1] = 0; arr.unshift(cid[3]);}
if(dif >= 0.1){
if(dif >= cid[2][1]){dif -= cid[2][1]; arr.unshift(cid[2]);}
else{cid[2][1] = Math.floor(dif/0.1) * 0.1; dif -= cid[2][1]; arr.unshift(cid[2]);}}
else{cid[2][1] = 0; arr.unshift(cid[2]);}
if(dif >= 0.05){
if(dif >= cid[1][1]){dif -= cid[1][1]; arr.unshift(cid[1])}
else{cid[1][1] = Math.floor(dif/0.05) * 0.05; dif -= cid[1][1]; arr.unshift(cid[1]);}}
else{cid[1][1] = 0; arr.unshift(cid[1]);}
if(dif >= 0.01){
if(dif >= cid[0][1]){dif -= cid[0][1]; arr.unshift(cid[0])}
else{cid[0][1] = Math.floor(dif/0.01) * 0.01; dif -= cid[0][1]; arr.unshift(cid[0]);}}
else{cid[0][1] = 0; arr.unshift(cid[0]);}
let match = [];
for(let i = 0; i < arr.length; i++){
if(arr[i][1] > 0){
match.push(arr[i]);
}
}
if(dif > 0){
result.status = "INSUFFICIENT_FUNDS";
result.change = [];
}
else if(check){
result.status = "CLOSED";
result.change = arr;
}
else{result.status = "OPEN";
result.change = match;}
console.log(result);
return result;
}
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) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36
Challenge: Cash Register
Link to the challenge: