java ergibt ein richtiges ergebnis obwohl die aussage falsch ist?

... komplette Frage anzeigen

2 Antworten

Das liegt an der internen Darstellung von Gleitkommazahlen.

Probier mal folgendes:

boolean foo = ((0.3) == (0.1 + 0.1 + 0.1));

Was glaubst du, welchen Wert "foo" jetzt hat? True oder False? :)

(Disclaimer: Die Übertriebene Klammerung dient nur der Verdeutlichung!)

Alles zu erklären würde den Rahmen einer Antwort auf GF sprengen, weshalb ich einfach mal auf die Wikipedia verweise:

https://de.wikipedia.org/wiki/Gleitkommazahl

Viel Spaß beim Lesen! :)

Antwort bewerten Vielen Dank für Deine Bewertung

float hat eine Genauigkeit von 7 signifikanten Stellen, egal ob vor oder nach dem Komma. Bei double sind es 15 Stellen.

Wenn du so präzise Werte miteinander vergleichen willst, verwende die Klasse BigDecimal.

Antwort bewerten Vielen Dank für Deine Bewertung