Go Float-Vergleich: Ein umfassender Ansatz
Der Vergleich von Gleitkommazahlen (Floats) auf Gleichheit in Go erfordert aufgrund der Inhärente Einschränkungen und Komplexitäten der Gleitkomma-Arithmetik.
Verwendung von Bit Darstellung: Eine begrenzte Lösung
Der bereitgestellte Code vergleicht Floats, indem er ihre binären Darstellungen untersucht und einen Unterschied von einem Bit berücksichtigt. Dieser Ansatz ist jedoch fehlerhaft, da er die Bedeutung der Bitposition in der Binärdarstellung außer Acht lässt. Beispielsweise kann ein Unterschied im niedrigstwertigen Bit bei sehr großen Floats keine Rolle spielen, während er bei sehr kleinen Floats eine erhebliche Abweichung darstellen könnte.
Ein präziserer und allgemeinerer Ansatz
Eine robustere und genauere Methode besteht darin, die Differenz zwischen den beiden Floats mithilfe der Funktion math.Abs zu berechnen. Durch Festlegen eines geeigneten Schwellenwerts können Sie feststellen, ob der Unterschied vernachlässigbar ist, und die Floats als „nahezu gleich“ betrachten.
Mit diesem Ansatz können Sie:
Beispielimplementierung
Unten finden Sie eine Beispielimplementierung:
import ( "fmt" "math" ) const float64EqualityThreshold = 1e-9 func almostEqual(a, b float64) bool { return math.Abs(a - b) <= float64EqualityThreshold } func main() { a := 0.1 b := 0.2 fmt.Println(almostEqual(a + b, 0.3)) // true }
Diese Lösung ist allgemeiner und anpassungsfähiger, sodass Sie Folgendes tun können Behandeln Sie verschiedene Szenarien und legen Sie den Gleichheitsschwellenwert entsprechend Ihrer Anwendung fest.
Das obige ist der detaillierte Inhalt vonWie kann man Gleitkommazahlen in Go genau auf Gleichheit vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!