Computerarithmetik
Warum ist in vielen Programmiersprachen der Vergleich 0.1 + 0.2 == 0.3 in doppelter Genauigkeit falsch?
- AWeil der Additionsbefehl Dezimalbrüche mitunter nicht korrekt addiert
- BWeil 0.3 ein Sonderwert ist, der als Gleitkommazahl nicht darstellbar ist, sodass der Vergleich stets falsch ist
- CWeil alle Werte durch gerundete, nahe liegende Werte dargestellt werden und sich durch Fehler geringfügig unterscheiden
Antwort und Erläuterung anzeigen
Antwort: C. Weil alle Werte durch gerundete, nahe liegende Werte dargestellt werden und sich durch Fehler geringfügig unterscheiden
0.1, 0.2 und 0.3 sind binär alle nicht exakt darstellbar und werden jeweils auf den nächstliegenden Wert gerundet gespeichert. Die gerundete Summe der Näherungen von 0.1 und 0.2 ergibt 0.30000000000000004 und stimmt in der letzten Stelle nicht mit der Näherung von 0.3, 0.29999999999999998…, überein. Gleitkommazahlen werden daher üblicherweise darauf geprüft, ob der Betrag der Differenz kleiner als eine kleine Toleranz ist. Der Additionsbefehl rundet normgerecht korrekt, und auch 0.3 ist als Näherungswert darstellbar.