Exact Change
by Tgwizman
HTML
<input type="text" id="input" />
<input type="button" onclick="calc()" value="Calculate" />
<br/>
<div id="output"></div>
JavaScript
var input = document.getElementById('input'),
output = document.getElementById('output');
if (location.href.split('?') &&
location.href.split('?')[1]) {
input.value = location.href.split('?')[1];
} else {
input.value = Math.floor(Math.random()*100000)/100;
}
function calc() {
change = input.value;
var pennies = change * 100,
nickels = 0,
dimes = 0,
quarters = 0,
ones = 0,
fives = 0,
tens = 0,
twenties = 0,
fifties = 0,
hundreds = 0;
//nickels
while (pennies >= 5) {
pennies -= 5;
nickels++;
}
//dimes
while (nickels >= 2) {
nickels -= 2;
dimes++;
}
//quarters
while (dimes >= 5) {
dimes -= 5;
quarters += 2;
}
while (dimes >= 2 && nickels >= 1) {
dimes -= 2;
nickels--;
quarters++;
}
while (dimes >= 3) {
dimes -= 3;
nickels++;
quarters++;
}
//ones
while (quarters >= 4) {
quarters -= 4;
ones++;
}
//fives
while (ones >= 5) {
ones -= 5;
fives++;
}
//tens
while (fives >= 2) {
fives -= 2;
tens++;
}
//twenties
while (tens >= 2) {
tens -= 2;
twenties++;
}
while (twenties >= 5) {
twenties -= 5;
hundreds++;
}
//fifties
while (twenties >= 2 && tens >= 1) {
twenties -= 2;
tens--;
fifties++;
}
//hundreds
while (fifties >= 2) {
fifties -= 2;
hundreds++;
}
pennies = Math.round(pennies);
change =
(function(){if (hundreds == 0) {return ''} if (hundreds == 1) {return hundreds + ' hundred, '} return hundreds + ' hundreds, '})() +
(function(){if (fifties == 0) {return ''} if (fifties == 1) {return fifties + ' fifty, '} return fifties + ' fifties, '})() +
...