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

黄舟
Freigeben: 2017-10-12 10:56:44
Original
3229 Leute haben es durchsucht

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
# 错误被累加
Nach dem Login kopieren

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
Nach dem Login kopieren

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
# 判断是否小于某一小量
Nach dem Login kopieren

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!

Verwandte Etiketten:
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