Ungenaue Subtraktion

Status
Nicht offen für weitere Antworten.

Dukler

Mitglied
Hallo!

Ich programmiere gerade Programm, und an einer Stelle dieses Programms muss ich von einer Double Zahl, eine Double Zahl abziehen(ist eigentlich eine Integer Zahl, aber ich habe sie zu einer Double gemacht, da ich gedacht habe, das, dies den Fehler behebt).

Wenn ich nun die besagte Zahl abziehe, als Beispiel 23.3 - 8, funktioniert alles super. Doch wenn die erste Zahl 3.3, 4.4, 5.5... ist, kommt bei einer Subtraktion mit irgendeiner ganzen Zahl z.B. 0.299999999999999997 raus.

Gibt es irgendeine Möglichkeit dies zu verhindern?
 

musiKk

Top Contributor
Aufgrund der zugrunde liegenden Gleitkommaarithmetik, die diese Fehler verursacht, musst du mit einem echt genauen Datentyp wie BigDecimal arbeiten. Der Nachteil dabei ist, dass die Performance stark abnimmt.
 

Dukler

Mitglied
Ich brauche ja eigentlich nur eine Kommastelle, also könnte ich das ganze Runden, aber ich hab keine Ahnung wie man Double Zahlen rundet, so das noch eine Kommastelle bleibt.
 

Dukler

Mitglied
Danke, SlaterB's Methode hat funktioniert!
Ich fühle mich jetzt irgendwie dumm, dass ich da nicht selber drauf gekommen bin. Liegt wohl daran dass ich müde von der Arbeit bin^^
 

SchonWiederFred

Bekanntes Mitglied
alunno hat gesagt.:
Berechnungen mit Gleitkommazahlen SIND ungenau.
Nö, die sind sehr präzise. float und double sind aber Binärbrüche, und die meisten endlichen Dezimalbrüche kann man nicht exakt als Binärbruch darstellen. Wenn man jetzt mit Zahlen rechnen will, die dezimal auf dem Bildschirm ausgegeben werden sollen (z.B. Geldbeträge), sind float und double natürlich eine schlechte Wahl.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben