I’m pretty sure it’s a rounding error, but I can’t work out where. Run:
console.log(makeChange([["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]], 96.71));
console.log(makeChange([["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]], 96.72));
console.log(makeChange([["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]], 96.73));
console.log(makeChange([["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]], 96.74));
and watch the change errr, change. 
For my version, I used something like:
money = money.toFixed(2);
where (I’m guessing) you use:
money = Math.floor(money * 100) / 100;
but when I tried to plug ‘toFixed()’ in your code, it made no difference, so I figure it must be during another arithmetic function.