I need to create a program that can calculate change in the most efficient way possible. Ex. 3 Quarters instead of 75 pennies. It is only single dollar bills, quarters, dimes, etc. However, there are a few rules i need to follow.
1) Isolate both the dollars and cents components of the original input string into separate sub strings.
2) Use the Integer utility class to parse these two sub strings into primitive integer values.
3) You may not use any typecasting in your work.
4) Test thoroughly to ensure that no rounding errors remain.
The code is what I did initially, but i am always a penny off for some values
public class ChangeCalculator
{
public static void Main (String args[]){
double NumberOfMoney = Double.parseDouble(args [0]);
int NumberOfCoins = (int)(NumberOfMoney * 100);
System.out.println("Amount of Money: " + NumberOfMoney + "\n");
int NumberOfDollars = (int)(NumberOfCoins/100);
NumberOfCoins = NumberOfCoins - 100 * NumberOfDollars;
System.out.println("Dollars: " + NumberOfDollars);
int NumberOfQuarters = (int)(NumberOfCoins/25);
NumberOfCoins = NumberOfCoins - 25 * NumberOfQuarters;
System.out.println("Quarters: " + NumberOfQuarters);
int NumberOfDimes = (int)(NumberOfCoins/10);
NumberOfCoins = NumberOfCoins - 10 * NumberOfDimes;
System.out.println("Dimes: " + NumberOfDimes);
int NumberOfNickels = (int)(NumberOfCoins/5);
NumberOfCoins = NumberOfCoins - 5 * NumberOfNickels;
System.out.println("Nickels: " + NumberOfNickels);
int NumberOfPennies = (int)(NumberOfCoins/1);
NumberOfCoins = NumberOfCoins - 1 * NumberOfPennies;
System.out.println("Pennies: " + NumberOfPennies);
}
}
the input $1.15 should output Dollars: 1 Quarters: 0 Dimes: 1 Nickels: 1 Pennies: 0 BUT it outputs Dollars: 1 Quarters: 0 Dimes: 1 Nickels: 0 Pennies: 4