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:
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)
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!