R. Ernst
2004-10-12 17:40:37 UTC
Hallo NG!
Ein wahrscheinlich triviales Problem, ich komme aber trotzdem nicht auf die
Loesung...
ich moechte mit einem programm eine muenzausgabe simulieren. natuerlich
so,dass mir moeglichst wenig muenzen ausgegeben werden.
realisiert habe ich das indem ich den auszugebenden betrag in einer double
variablen speicher, von dem dann die jeweils ausgegeben muenze abziehe und
so weiter.
leider tritt, je nach ausgangsbetrag ein "rundungsfehler" (mein problem)
auf, so dass ich nie auf einen restbetrag von 0.0 komme. woran liegt das?
vorweg: das ist tag zwei mit java fuer mich ; )
anbei der source des programms:
class Muenzausgabe {
public static void main (String[] args) {
double betrag;
double muenze;
betrag = Double.parseDouble (args[0]);
int i = 0;
System.out.println ("Betrag: " + betrag);
while (betrag > 0)
{
System.out.print (i++);
if (betrag >= 2.0) { betrag = betrag - 2.0; muenze = 2.0; }
else if (betrag >= 1.0) { betrag = betrag - 1.0; muenze = 1.0; }
else if (betrag >= 0.5) { betrag = betrag - 0.5; muenze = 0.5; }
else if (betrag >= 0.2) { betrag = betrag - 0.2; muenze = 0.2; }
else if (betrag >= 0.1) { betrag = betrag - 0.1; muenze = 0.1; }
else if (betrag >= 0.05) { betrag = betrag - 0.05; muenze = 0.05; }
else if (betrag >= 0.02) { betrag = betrag - 0.02; muenze = 0.02; }
else { betrag = betrag - 0.01; muenze = 0.01; }
System.out.println ("Verwendete Muenze: " + muenze + " Restbetrag: " +
betrag);
}
}
}
Ein wahrscheinlich triviales Problem, ich komme aber trotzdem nicht auf die
Loesung...
ich moechte mit einem programm eine muenzausgabe simulieren. natuerlich
so,dass mir moeglichst wenig muenzen ausgegeben werden.
realisiert habe ich das indem ich den auszugebenden betrag in einer double
variablen speicher, von dem dann die jeweils ausgegeben muenze abziehe und
so weiter.
leider tritt, je nach ausgangsbetrag ein "rundungsfehler" (mein problem)
auf, so dass ich nie auf einen restbetrag von 0.0 komme. woran liegt das?
vorweg: das ist tag zwei mit java fuer mich ; )
anbei der source des programms:
class Muenzausgabe {
public static void main (String[] args) {
double betrag;
double muenze;
betrag = Double.parseDouble (args[0]);
int i = 0;
System.out.println ("Betrag: " + betrag);
while (betrag > 0)
{
System.out.print (i++);
if (betrag >= 2.0) { betrag = betrag - 2.0; muenze = 2.0; }
else if (betrag >= 1.0) { betrag = betrag - 1.0; muenze = 1.0; }
else if (betrag >= 0.5) { betrag = betrag - 0.5; muenze = 0.5; }
else if (betrag >= 0.2) { betrag = betrag - 0.2; muenze = 0.2; }
else if (betrag >= 0.1) { betrag = betrag - 0.1; muenze = 0.1; }
else if (betrag >= 0.05) { betrag = betrag - 0.05; muenze = 0.05; }
else if (betrag >= 0.02) { betrag = betrag - 0.02; muenze = 0.02; }
else { betrag = betrag - 0.01; muenze = 0.01; }
System.out.println ("Verwendete Muenze: " + muenze + " Restbetrag: " +
betrag);
}
}
}