Heim >Java >javaLernprogramm >Warum führt die Summierung von Doubles in Java zu unerwarteten Werten?

Warum führt die Summierung von Doubles in Java zu unerwarteten Werten?

Linda Hamilton
Linda HamiltonOriginal
2024-11-10 18:15:02937Durchsuche

Why Does Summing Doubles in Java Result in Unexpected Values?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn