Heim >Backend-Entwicklung >Python-Tutorial >Warum verursachen Gleitkommazahlen in Python Rundungsfehler und wie können diese behoben werden?

Warum verursachen Gleitkommazahlen in Python Rundungsfehler und wie können diese behoben werden?

Susan Sarandon
Susan SarandonOriginal
2024-12-02 21:09:28858Durchsuche

Why Do Floating-Point Numbers in Python Cause Rounding Errors and How Can They Be Addressed?

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:

  • Delta = 0,29 und Delta = 0,28999999999999998
  • Delta = 0,58 und Delta = 0,57999999999999996

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!

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