Heim >Java >javaLernprogramm >Warum führt die Summierung von Doubles in Java zu unerwarteten Werten?
Seltsames Gleitkommaverhalten in Java-Programmen
Bei dieser Frage stößt ein Benutzer beim Summieren doppelter Werte in einem Array auf seltsames Verhalten. Konkret weicht das Ergebnis allmählich von der erwarteten Summe ab. Dieses Phänomen kann auf die Art und Weise zurückgeführt werden, wie Gleitkommawerte in digitalen Systemen dargestellt werden.
IEEE-Einzel- und -Doppeldarstellungen, die in Programmiersprachen am weitesten verbreiteten Gleitkommadarstellungen, verwenden Binärspeicherung statt Dezimalspeicherung. Folglich können nur bestimmte Dezimalbrüche genau in binärer Form dargestellt werden. Diese Brüche sind auf Werte beschränkt, die als Summen negativer Zweierpotenzen dargestellt werden können, wie zum Beispiel:
0.5 (2^-1) 0.125 (2^-3) 0.625 (2^-1 + 2^-3)
Brüche, die nicht als Summen negativer Zweierpotenzen dargestellt werden können, wie 0,96, enthalten einen inhärenten Fehler ihre binäre Darstellung. Wenn diese Brüche als Dezimalwerte mit vollständiger Genauigkeit angezeigt werden, stimmen sie aufgrund dieser unvermeidlichen Näherung nicht mit dem Originalwert überein.
Das obige ist der detaillierte Inhalt vonWarum führt die Summierung von Doubles in Java zu unerwarteten Werten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!