Hallo zusammen,
Ich mache dieses Jahr meine Fachhochschulreife und eines meiner Kernfächer ist Informationstechnik. Die aktuelle aufgabe lautet einen Wechselgeldautomaten zu programmieren.
In der Theorie funktionert das einwandfrei, jedoch scheitert es am Schritt :
restgeld = restgeld * 100 ;
Denn hier werden die Werte versudelt. War der Wert davor noch 1.13 so ist der Wert danach 129.999999999999997. ???:L???:L
Wie kann ich das umgehen oder ändern, das dort 130 rauskommt?
Danke im Vorraus
Ich mache dieses Jahr meine Fachhochschulreife und eines meiner Kernfächer ist Informationstechnik. Die aktuelle aufgabe lautet einen Wechselgeldautomaten zu programmieren.
Java:
import Prog1Tools.IOTools;
public class Verkaufsautomat
{
public static void main(String[] args)
{
double sollbetrag = IOTools.readDouble("Der zu bezahlende Betrag (Euro.Cent): ");
double istbetrag;
do
{
istbetrag = IOTools.readDouble("Wie viel Geld haben sie?(Euro.Cent): ");
}while(istbetrag<sollbetrag);
;
double restgeld = istbetrag - sollbetrag;
restgeld= restgeld * 100;
System.out.println(restgeld);
do
{
if (restgeld >= 50000)
{
restgeld = restgeld -50000;
System.out.println(restgeld /100);
}
}while(restgeld>=50000);
System.out.println("test 200€");
do
{
if (restgeld >= 20000)
{
restgeld = restgeld - 20000;
System.out.println(restgeld /100);
}
}while(restgeld>=20000);
System.out.println("test test 100€");
do
{
if (restgeld >= 10000)
{
restgeld = restgeld - 10000;
System.out.println(restgeld /100);
}
}while(restgeld>=10000);
System.out.println("test 50 €");
do
{
if (restgeld >= 5000)
{
restgeld = restgeld - 5000;
System.out.println(restgeld /100);
}
}while(restgeld>=5000);
System.out.println("test 20€");
do
{
if (restgeld >= 2000)
{
restgeld = restgeld - 2000;
System.out.println(restgeld /100);
}
}while(restgeld>=2000);
System.out.println("test 10 €");
do
{
if (restgeld >= 1000)
{
restgeld = restgeld - 1000;
System.out.println(restgeld /100);
}
}while(restgeld>=1000);
System.out.println("test 5€");
do
{
if (restgeld >= 500)
{
restgeld = restgeld - 500;
System.out.println(restgeld /100);
}
}while(restgeld>=500);
System.out.println("test 2€");
do
{
if (restgeld >= 200)
{
restgeld = restgeld - 200;
System.out.println(restgeld /100);
}
}while(restgeld>=200);
System.out.println("test 1 €");
do
{
if (restgeld >= 100)
{
restgeld = restgeld - 100;
System.out.println(restgeld /100);
}
}while(restgeld!=0);
System.out.println("test 50cent");
do
{
if (restgeld >= 50)
{
restgeld = restgeld - 50;
System.out.println(restgeld /100);
}
}while(restgeld>=50);
System.out.println("test 20 cent €");
do
{
if (restgeld >= 20)
{
restgeld = restgeld - 20;
System.out.println(restgeld /100);
}
}while(restgeld>=20);
System.out.println("test 10 cent");
do
{
if (restgeld >= 10)
{
restgeld = restgeld - 10;
System.out.println(restgeld /100);
}
}while(restgeld>=10);
System.out.println("test 5cent");
do
{
if (restgeld >= 5)
{
restgeld = restgeld - 5;
System.out.println(restgeld /100);
}
}while(restgeld>=5);
System.out.println("test 2cent");
do
{
if (restgeld >= 2)
{
restgeld = restgeld - 2;
System.out.println(restgeld /100);
}
}while(restgeld>=2);
System.out.println("test 1 cent");
do
{
if (restgeld >= 1)
{
restgeld = restgeld - 1;
System.out.println(restgeld /100);
}
}while(restgeld!=0);
System.out.println(restgeld);
}
}
In der Theorie funktionert das einwandfrei, jedoch scheitert es am Schritt :
restgeld = restgeld * 100 ;
Denn hier werden die Werte versudelt. War der Wert davor noch 1.13 so ist der Wert danach 129.999999999999997. ???:L???:L
Wie kann ich das umgehen oder ändern, das dort 130 rauskommt?
Danke im Vorraus