Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var CashAmount = function(num) {
- this.value = num;
- this.valueInPennies = num * 100;
- }
- CashAmount.prototype.totalInPennies = function() {
- return this.valueInPennies;
- }
- CashAmount.prototype.addDoubleAmount = function(inputDouble) {
- inputDouble = inputDouble * 100;
- return this.valueInPennies + inputDouble;
- }
- CashAmount.prototype.quantityOfEachDenomination = function() {
- let denominations = {
- 'hundreds': 0,
- 'fifties': 0,
- 'twenties': 0,
- 'tens': 0,
- 'fives': 0,
- 'ones': 0,
- 'quarters': 0,
- 'dimes': 0,
- 'nickels': 0,
- 'pennies': 0
- }
- denominations.hundreds = this.value > 100 ? Math.floor(this.value/100) : 0
- var remainder = Math.floor(this.value%100);
- denominations.fifties = remainder > 50 ? Math.floor(remainder/50) : 0
- remainder = Math.floor(remainder%50);
- denominations.twenties = remainder > 20 ? Math.floor(remainder/20) : 0
- remainder = Math.floor(remainder%20);
- denominations.tens = remainder > 10 ? Math.floor(remainder/10) : 0
- remainder = Math.floor(remainder%10);
- denominations.fives = remainder > 5 ? Math.floor(remainder/5) : 0
- remainder = Math.floor(remainder%5);
- denominations.ones = remainder > 1 ? Math.floor(remainder/1) : 0
- remainder = remainder%1
- remainder = remainder * 100;
- denominations.quarters = remainder > 25 ? Math.floor(remainder/25) : 0
- remainder = remainder % 25
- denominations.dimes = remainder > 10 ? Math.floor(remainder/10) : 0
- remainder = remainder % 10
- denominations.nickels = remainder > 5 ? Math.floor(remainder/5) : 0
- remainder = remainder % 5
- denominations.pennies = remainder > 1 ? remainder : 0
- return denominations;
- }
- CashAmount.prototype.toDouble = function() {
- return this.value
- }
- CashAmount.prototype.toDoubleString = function() {
- return '' + this.value
- }
- //TESTING
- function assertEqual(actual, expected, testName) {
- actual = JSON.stringify(actual);
- expected = JSON.stringify(expected);
- if (actual === expected) {
- console.log("Passed");
- } else {
- console.log("FAILED [" + testName + "] expected: " + expected + "; but got: " + actual);
- }
- }
- var sample = new CashAmount(235.13)
- var denominationsSample = {
- 'hundreds': 2,
- 'fifties': 0,
- 'twenties': 1,
- 'tens': 1,
- 'fives': 1,
- 'ones': 0,
- 'quarters': 0,
- 'dimes': 1,
- 'nickels': 0,
- 'pennies': 3
- }
- assertEqual(sample.totalInPennies(), 2351300, 'totalInPennies Test');
- assertEqual(sample.addDoubleAmount(10.15), 245.28, 'addDoubleAmount Test');
- assertEqual(sample.quantityOfEachDenomination(), denominationsSample, 'quantityOfEachDenomination Test');
- assertEqual(sample.toDouble(),235.13, 'toDouble Test');
- assertEqual(sample.toDoubleString(), '235.13', 'toDoubleString Test');
Add Comment
Please, Sign In to add comment