Heim > Backend-Entwicklung > C++ > Warum ergibt eine Gleitkommaberechnung 1,9999999999999996 statt 2,0?

Warum ergibt eine Gleitkommaberechnung 1,9999999999999996 statt 2,0?

Susan Sarandon
Freigeben: 2024-11-15 01:09:02
Original
918 Leute haben es durchsucht

Why Does a Floating-Point Calculation Result in 1.9999999999999996 Instead of 2.0?

Umgang mit Genauigkeitsabweichungen bei Gleitkomma-Darstellungen

Bei der Arbeit mit Gleitkommazahlen kann es zu Präzisionseinschränkungen aufgrund ihrer internen Darstellung kommen unerwartete Ergebnisse. Betrachten Sie das folgende Problem:

In einem Programm wird eine Variable namens mw mit dem Wert 4,6 initialisiert, der durch Konvertieren einer Zeichenfolge mit diesem Wert in einen Double-Wert erhalten wird. Bei der Verwendung in einer Berechnung zur Bestimmung der Anzahl der Spalten ergibt sich jedoch ein Ergebnis von 1,9999999999999996 statt der erwarteten 2,0.

Diese Diskrepanz entsteht, weil die interne Darstellung von Gleitkommazahlen näherungsweise ist. In diesem Fall kann 4,6 nicht genau als Float gespeichert werden, was dazu führt, dass in der Berechnung ein etwas anderer Wert von 4,5999999999999996 verwendet wird.

Um dieses Problem anzugehen, ist es wichtig zu erkennen, dass strikte Gleichheitsvergleiche mit Floating- Punktzahlen sind unzuverlässig. Erwägen Sie stattdessen die Verwendung eines Bereichs akzeptabler Werte, um festzustellen, ob ein Ergebnis nahe genug am erwarteten Ergebnis liegt.

Beachten Sie außerdem, dass einige Werte nicht präzise als Gleitkommazahlen dargestellt werden können. Weitere Informationen finden Sie in umfassenden Ressourcen wie „Was jeder Informatiker über Gleitkomma-Arithmetik wissen sollte“ und „Vergleich von Gleitkommazahlen“. Wenn Sie diese Einschränkungen verstehen und geeignete Techniken anwenden, können Sie Genauigkeitsprobleme bei der Arbeit mit Gleitkommazahlen abmildern.

Das obige ist der detaillierte Inhalt vonWarum ergibt eine Gleitkommaberechnung 1,9999999999999996 statt 2,0?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage