Rundungsfehler von Python bei Gleitkommazahlen
Bei der Arbeit mit Gleitkommazahlen in Python ist es wichtig, sich des Potenzials bewusst zu sein für Rundungsfehler. Diese Fehler entstehen, weil Gleitkommazahlen nur reale Zahlen annähern können und bestimmte Werte abhängig von ihrer Nähe zu exakten Zweierpotenzen unterschiedlich dargestellt werden können.
Bedenken Sie zum Beispiel den Codeausschnitt:
for i_delta in range(0, 101, 1): delta = float(i_delta) / 100 (...) filename = 'foo' + str(int(delta * 100)) + '.dat'
In diesem Code führen die folgenden Delta-Werte zu identischen Dateien:
Dies geschieht, weil das genaue Ergebnis von float(29) / 100 0,28999999999999998 ist, was auf 0,28 abgerundet wird. Ebenso wird float(58) / 100 auf 0,57999999999999996 abgerundet.
Es ist wichtig zu beachten, dass dieser Rundungsfehler nicht systematisch ist und nicht jede Ganzzahl betrifft. Um weitere Einblicke in diese Fehler zu erhalten, betrachten Sie den folgenden Code:
import sys n = int(sys.argv[1]) for i in range(0, n + 1): a = int(100 * (float(i) / 100)) if i != a: print i, a
Bei der Ausführung gibt dieser Code Zahlenpaare aus, bei denen der Rundungsfehler auftritt. Durch die Analyse dieser Paare kann festgestellt werden, dass die Fehler tendenziell bei Zahlen auftreten, die nicht als exakte Zweierpotenzen dargestellt werden können.
Um dieses Problem zu beheben, wird empfohlen, nach Möglichkeit exakte Arithmetik zu verwenden und vorsichtig zu sein der Einschränkungen und Rundungsfehler, die mit Gleitkommazahlen verbunden sind. Weitere Informationen finden Sie im Artikel „Was jeder Informatiker über Gleitkomma-Arithmetik wissen sollte“, um einen umfassenden Leitfaden zu diesem komplexen Thema zu erhalten.
Das obige ist der detaillierte Inhalt vonWarum verursachen Gleitkommazahlen in Python Rundungsfehler und wie können diese behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!