Heim > Java > javaLernprogramm > Warum führt das wiederholte Hinzufügen von 0,04 in Java zu unerwarteten Ergebnissen?

Warum führt das wiederholte Hinzufügen von 0,04 in Java zu unerwarteten Ergebnissen?

DDD
Freigeben: 2024-11-10 05:48:02
Original
578 Leute haben es durchsucht

Why Does Adding 0.04 Repeatedly in Java Lead to Unexpected Results?

Gleitkomma-Diskrepanzen in Java: Genauigkeitseinschränkungen

In einem Java-Programm kann es beim Summieren von Gleitkommawerten zu eigenartigen Verhaltensweisen kommen . Wie in der Abfrage beobachtet, führt eine einfache Schleife, die 0,04 zu einem Array von 25 Double-Werten hinzufügt, zu Ergebnissen mit unerwartetem Verhalten.

Gleitkommawerte wie IEEE-Einzel- und -Doppelwerte werden häufig in Programmiersprachen verwendet. Allerdings stellen diese Formate die meisten Dezimalbrüche nicht exakt dar. Dies liegt an ihrer binären Gleitkomma-Darstellung, die sich grundlegend von der dezimalen Gleitkomma-Darstellung unterscheidet.

Konkret sind die einzigen Bruchwerte, die im binären Gleitkomma exakt dargestellt werden können, Summen negativer Zweierpotenzen , beispielsweise 0,5 (2^-1), 0,125 (2^-3) oder 0,625 (2^-1 2^-3). Wenn Dezimalbrüche nicht genau als solche Summen dargestellt werden können, handelt es sich um eine leichte Näherung.

Im bereitgestellten Beispiel kann der Wert 0,96 nicht genau als Summe negativer Zweierpotenzen ausgedrückt werden. Wenn daher der Wert zu 0,04 addiert und mit voller Dezimalgenauigkeit gedruckt wird, weicht das Ergebnis geringfügig von seinem ursprünglichen Wert ab.

Diese Genauigkeitseinschränkung ist in der binären Gleitkommadarstellung inhärent und sollte bei der Arbeit mit berücksichtigt werden Gleitkommaberechnungen. In Fällen, in denen es auf genaue Präzision ankommt, kann die Verwendung alternativer Darstellungen oder Algorithmen erforderlich sein.

Das obige ist der detaillierte Inhalt vonWarum führt das wiederholte Hinzufügen von 0,04 in Java zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage