Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich Gleitkommazahlen in Python genau auf nahezu Gleichheit vergleichen?

Wie kann ich Gleitkommazahlen in Python genau auf nahezu Gleichheit vergleichen?

DDD
Freigeben: 2024-12-22 19:24:11
Original
664 Leute haben es durchsucht

How Can I Accurately Compare Floating-Point Numbers for Near-Equality in Python?

Vergleich von Floats auf nahezu Gleichheit in Python: Ein genauerer Blick

Aufgrund möglicher Rundungs- und Präzisionsprobleme ist der Vergleich von Floats auf exakte Gleichheit in Python kann eine Herausforderung sein. Dies ist ein bekanntes Problem, wie in Bruce Dawsons Blogbeitrag „Comparing Floating Point Numbers, 2012 Edition“ hervorgehoben wird. Um diese Herausforderung in Python effektiv anzugehen, können mehrere Ansätze in Betracht gezogen werden.

Standardbibliotheksfunktionen

Python 3.5 führte math.isclose() und cmath.isclose() ein Funktionen, die speziell für den Vergleich von Floats mit einem Toleranzniveau entwickelt wurden. Diese Funktionen akzeptieren drei Argumente:

  • a und b: Die zu vergleichenden Float-Werte
  • rel_tol (optional): Die relative Toleranz, ein Faktor, der auf die größere Größe von angewendet wird a und b, um die zulässige Differenz zu definieren
  • abs_tol (optional): Eine absolute Toleranz, die eine minimale Differenz festlegt Schwellenwert

Wenn die absolute Differenz zwischen a und b kleiner als entweder rel_tol * max(abs(a), abs(b)) oder abs_tol ist, gelten die Werte als gleich.

Benutzerdefinierte Funktion für frühere Python-Versionen

Wenn Sie eine Python-Version vor 3.5 verwenden, können Sie diese implementieren Ihre eigene isclose()-Funktion basierend auf dem folgenden Codeausschnitt in der Dokumentation:

def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
    return abs(a - b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
Nach dem Login kopieren

Diese benutzerdefinierte Funktion bietet die gleiche Funktionalität wie die Standardbibliotheksfunktion und ermöglicht Ihnen den Vergleich von Floats innerhalb eines angegebenen Toleranzbereichs.

Das obige ist der detaillierte Inhalt vonWie kann ich Gleitkommazahlen in Python genau auf nahezu Gleichheit vergleichen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage