Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung der Prinzipien und Operationen von Gleitkommazahlen in Python

Detaillierte Erläuterung der Prinzipien und Operationen von Gleitkommazahlen in Python

黄舟
黄舟Original
2017-10-12 10:56:443171Durchsuche

In diesem Artikel werden hauptsächlich die Prinzipien und die Operationsanalyse von Gleitkommazahlen in Python vorgestellt. Er analysiert häufige Fehler bei Python-Gleitkommazahlenoperationen in Form von Beispielen und erläutert kurz die Prinzipien von Gleitkommazahlenoperationen und Implementierungsmethoden für den Vergleich Operationen. Freunde, die es brauchen Sie können sich auf Folgendes beziehen:

Die Beispiele in diesem Artikel beschreiben die Prinzipien und Operationen von Gleitkommazahlen in Python. Ich teile es Ihnen als Referenz wie folgt mit:

Schauen wir uns zunächst ein kontraintuitives Beispiel an:


>>> s = 0.
>>> for i in range(10): s += .1
>>> s
0.9999999999999999
# 错误被累加

Schauen wir uns ein häufigeres Beispiel an , direktes Beispiel Beispiele, die sich auf die Beurteilungslogik auswirken:


>>> from math import sqrt
>>> a = sqrt(2)
>>> a*a == a
False

Der Grund, warum die obigen Ergebnisse auftreten, ist, dass Python (genauer gesagt die Computerhardwarearchitektur) Gleitkommazahlen darstellt Schauen wir uns die Computerdarstellung (basierend auf der Binärzahl) der Dezimalzahl 0,1 an. Informationen zur Konvertierung einer Dezimalzahl in eine Binärdezimalzahl finden Sie unter Python-Dezimal- und Binärdezimalkonvertierung. Bei der Konvertierung von Dezimalzahl 0,1 in Binärzahl ist das Ergebnis 0,0001100110011001..., eine Endlosschleife. Der Computer kann keine Endlosergebnisse anzeigen und die Ergebnisse nur abschneiden.

„==“ bei Gleitkommazahlen

Basierend auf den oben genannten Überlegungen müssen wir bei Gleichheitsvergleichen von Gleitkommazahlen besonders vorsichtig sein vorsichtig und direkt Bei der Verwendung von == besteht ein Problem darin, nicht zu prüfen, ob die Gleitkommazahlen gleich sind, sondern zu prüfen, ob die beiden nahe genug beieinander liegen,


>>> a = sqrt(2)
>>> abs(a*a-2) < epsilon
# 判断是否小于某一小量

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Prinzipien und Operationen von Gleitkommazahlen in Python. 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