Exact Change - Help answers matched but won't pass

Hey All!

I’ve been stuck on this problem for some time.
Had a weird bug with getting weird decimal numbers. This seems to have been resolved using an extra function to round answers to two decimal places explicitly.

Now I have a working solution that satisfies and completes all answers except one. (I get the correct answer but it won’t give me a check mark…)

Givens: 19.50, 20.00, [[“PENNY”, 0.01], [“NICKEL”, 0], [“DIME”, 0], [“QUARTER”, 0], [“ONE”, 0], [“FIVE”, 0], [“TEN”, 0]

Expected: “Insufficient Funds” - I get this exact answer but it would not let me pass all other tests have been passed.

Full code below. (Sorry rather lengthy)
function checkCashRegister(price, cash, cid) {

function roundMe(number) {
number *= 100;
number = Math.round(number);
number /= 100;
return number;
}
var change = cash-price;
var answer;
var changes = [1/100, 5/100,1/10,1/4,1,5,10,20,100];
var totalChange = 0;
var array = [];
var currentArray =[0,0];
// check for the two bad scenarios.
for (var i=0; i<cid.length; i++){
totalChange += cid[i][1];
}
if (totalChange < change){
return “Insufficent Funds”;
}
else if (totalChange == change){
return “Closed”;
}
//main program
else {
//read through the cid from biggest to smallest.

for (var i= cid.length-1; i>=0; i–){
if (changes[i]<= change && cid[i][1]>0 && change >0){
currentArray[0] = cid[i][0];
// if we require more change than what is available in correct basket then we take the entire pot of correct.
if (roundMe(change) >= cid[i][1]) {
currentArray[1] = roundMe(cid[i][1]);
change = change-cid[i][1];
change = roundMe(change);
}
else {
//keep taking out of the basket UNTIL the correct change no longer becomes the correct change.
while (roundMe(change) >= roundMe(changes[i])){
currentArray[1] += roundMe(changes[i]);
change -= roundMe(changes[i]);
cid[i][1] -= roundMe(changes[i]);
}
}
}
if (currentArray[1]>0){
array.push(currentArray);
}
currentArray = [0,0];
}
// Last insufficient funds checker.
if (roundMe(change)>0){
return “Insufficient Funds”;
}
else{answer = array;}
}
// Here is your change, ma’am.
return answer;
}

Test Below.
checkCashRegister(19.50, 20.00, [[“PENNY”, 0.01], [“NICKEL”, 0], [“DIME”, 0], [“QUARTER”, 0], [“ONE”, 0], [“FIVE”, 0], [“TEN”, 0], [“TWENTY”, 0], [“ONE HUNDRED”, 0]]);

This line has a typo “Insufficent”

if (totalChange < change){
return "Insufficent Funds";
}

Thank you very much ppc!

In the future can you please put your code in code tags. It’s really hard to help you when your text is not properly formatted.

var x = 1;
var y = 2;
var z = 3;