Hallo Ich habe ein Problem beim Erstellen eines Änderungsrechners für eine Schulaufgabe. Es ist im Wesentlichen zu berechnen, die geringste Menge an Änderungen für eine bestimmte Menge an Geld benötigt.Rundungsfehler?
- Ex. $ 5.36:
- 2 Toonies (2 $)
- 1 Loonie (1 $)
- 1 Quartal
- 1 Cent
- 0 Nickels
- 1 Cent
ich gesagt habe Alle meine Variablen müssen verdoppelt werden, damit ich die Werte und Summen zusammen berechnen kann. Es scheint auf ganze Zahlen (5.00, 6.00, 7.00) gut zu funktionieren, aber versagt, wenn ich eine Dezimalstelle hinzufüge. Wie wenn ich sage $ 5,25 sollte es 2 Toonies 1 Loonie und 1 Viertel sagen. Ich denke, es könnte ein Fehler beim Runden oder etwas falsch bei meinen Berechnungen sein. Jede Hilfe wird geschätzt. Hier sind die Berechnungen des Codes:
//Rounding to one number
DecimalFormat oneDigit = new DecimalFormat ("#,0");
//Ask user for input
String moneyinput = JOptionPane.showInputDialog ("Welcome to the Change Caluculator. "
+ "Please Enter your amount of money in Dollars ($): ");
//Take user input and create into string.
totmoney = Double.parseDouble (moneyinput);
//Calculate number of toonies
numtoonies = (totmoney/toonieval);
System.out.println ("There is a total of " + oneDigit.format (numtoonies) + " toonies.");
//Find new amount
totmoney = (totmoney%toonieval);
//Calculate the number of loonies
numloonies = (totmoney/loonieval);
//Find new amount
totmoney = (totmoney-numloonies);
System.out.println ("There is a total of " + oneDigit.format (numloonies) + " loonies.");
//Calculate number of quarters
numquarters = (totmoney/quarterval);
//State the about of Coins
System.out.println ("There is a total of " + oneDigit.format (numquarters) + " quarters.");
}
Ich wurde angewiesen, Decimalformat zu verwenden, so dass, wenn ich das tun Berechnungen bekomme ich nur eine ganze Zahl in der Ausgabe statt dezimal. Ich denke, ich mache alles richtig in den Berechnungen, aber ich bekomme eine seltsame Antwort, wenn es nicht eine ganze Zahl ist. – Dave555