Sobes.tech
Middle

Warum kann der Vergleich von Float-Zahlen falsch sein und wie kann man damit umgehen?

sobes.tech KI

Antwort von AI

Der Vergleich von Gleitkommazahlen (float) kann aufgrund ihrer Darstellung im Speicher fehlerhaft sein. Gleitkommazahlen werden im IEEE 754-Format gespeichert, das nicht immer Dezimalbrüche genau darstellen kann, was zu Rundungsfehlern führt.

Zum Beispiel kann der Ausdruck 0.1 + 0.2 == 0.3 aufgrund kleiner Ungenauigkeiten false zurückgeben.

Um dieses Problem zu beheben, vergleicht man normalerweise die Zahlen unter Berücksichtigung einer kleinen Delta (Epsilon):

const epsilon = 1e-9
func floatEquals(a, b float64) bool {
    return math.Abs(a - b) < epsilon
}

Auf diese Weise wird anstelle des direkten Vergleichs a == b geprüft, ob die Differenz zwischen den Zahlen klein genug ist, um sie als gleich zu betrachten. Dies hilft, Fehler im Zusammenhang mit der ungenauen Darstellung von Zahlen und der Ansammlung von Fehlern bei Berechnungen zu vermeiden.