Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

hallo und zwar mache ich zurzeit eine Ausbildung zum Mathematisch-Technischen- assistenten... und bin gerade einen OO-ticketautomaten zu programieren mein problem ist jetz da bei java ja manchmal rechnungsprobleme auftreten, bei den man runden muss z.B. beim geldeinwerfen (50 +20+10 =79,9999999999....) so und da liegt auch mein problem das programm soll ja ein ticket ausdrucken, sobald der eingezahlte betrag = dem preis ist da es aber zu diesem rechenfehler kommt, dachte ich mir ok mach ich es mit dem DecimalFormat

allerdings speichert er das gerundete ergebnis nur in dem textfeld ab nicht aber in der dazugehörigen variable so das zwar im textfeld 80 angezeigt wird aber der gezahlte preis intern noch 79,99999... ist meine frage ist jetz wie kann ich die betrag in der bishergezahlt variable speichern

methode Jframe

private void jButtonGeldEinwerfenActionPerformed(ActionEvent evt)

{

ticketautomat.setEinwerfenGeld(Double.parseDouble(jTextFieldGeldEinwerfen.getText()));

jTextFieldBisherGezahlt.setText(df.format(ticketautomat.getBisherGezahlt()));

System.out.println(ticketautomat.getBisherGezahlt());

}

methode aus der logisschen klasse ticketautomat

public void setEinwerfenGeld(double betrag)

{

_bisherGezahlt = _bisherGezahlt + betrag;

_rest = _fahrpreis - _bisherGezahlt;

_ueberschuss = _bisherGezahlt - _fahrpreis;

if (_rest < 0)

{

_rest = 0;

}

if (_ueberschuss < 0)

{

_ueberschuss = 0;

}

}

Geschrieben

Fließkommatypen sind für solche Operationen nicht geeignet, weil sie nur sehr wenige, ausgewählte nicht-ganzzahlige Werte exakt speichern können. Darum kommt es beim Rechnen mit double-Variablen zu Rundungsfehlern. Das ist übrigens kein Java-spezifisches Problem, sondern ein generelles Problem bei Fließkommatypen in allen Programmiersprachen.

Du könntest BigDecimal benutzen.

Geschrieben

klingt zwar doof aber ich wusset nicht welche java iversion ich hab ^^

hab das problem allerdings gelöst ^^ =) ich hab einfach eine runden methode erstellt und damit die variable gerundet (was mit decimalFormat aus irgendeinem grund nicht ging) jedenfals danke für die hilfe ich gug mir das big decimal an =)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...