Techniken für präzise Gleitkommavergleiche
Wenn Sie in Python mit Gleitkommazahlen arbeiten, ist es wichtig, geeignete Techniken zu verwenden, um präzise Vergleiche sicherzustellen. Hier sind einige Techniken, die Sie anwenden können:
Vergleich der absoluten Differenz
Beim Vergleich der absoluten Differenz wird geprüft, ob die absolute Differenz zwischen zwei Gleitkommazahlen kleiner als ein kleiner Schwellenwert ist. Diese Methode ist geeignet, wenn Sie die erwartete Präzision der verglichenen Werte kennen.
import sys
x = 0.1
y = 0.2
epsilon = sys.float_info.epsilon ## Kleinste positive Gleitkommazahl x, so dass 1.0 + x!= 1.0
if abs(x + y - 0.3) < epsilon:
print("x + y ist gleich 0.3")
else:
print("x + y ist nicht gleich 0.3")
Vergleich der relativen Differenz
Beim Vergleich der relativen Differenz wird geprüft, ob die absolute Differenz zwischen zwei Gleitkommazahlen im Vergleich zur Größenordnung der Zahlen klein ist. Diese Methode ist nützlich, wenn die Größenordnung der verglichenen Zahlen variiert.
import sys
x = 1.0
y = 1.000000001
epsilon = sys.float_info.epsilon
if abs(x - y) / max(abs(x), abs(y)) < epsilon:
print("x ist gleich y")
else:
print("x ist nicht gleich y")
ULP (Unit in the Last Place)-Vergleich
Die ULP-Vergleichsmethode prüft, ob die Differenz zwischen zwei Gleitkommazahlen kleiner als eine bestimmte Anzahl von Einheiten in der letzten Stelle (ULPs) ist. Dieser Ansatz ist präziser als die Methoden des Vergleichs der absoluten oder relativen Differenz.
import math
x = 0.1
y = 0.100000000000001
if abs(x - y) <= 2 * math.ulp(max(x, y)):
print("x ist gleich y")
else:
print("x ist nicht gleich y")
Durch die Verwendung dieser Techniken können Sie effektiv Gleitkommavergleiche in Python durchführen und die gewünschte Präzision in Ihren Berechnungen gewährleisten.