Präzisionsfehler bei der Float-zu-Int-Konvertierung in Go vermeiden
Beim Konvertieren von float64-Werten in int in Go stoßen Programmierer häufig auf Präzisionsfehler . Diese Fehler entstehen aufgrund der inhärenten Einschränkungen der binären Zahlendarstellung auf Computern.
Binärdarstellung verstehen
Ein float64 stellt eine Zahl dar, die den IEEE-754-Standard verwendet und 53 zuordnet Bits für Ziffern und 11 Bits für den Exponenten. Bestimmte Zahlen wie 100,55 können jedoch in dieser endlichen Binärstruktur nicht genau dargestellt werden.
Der Code:
Der folgende Code veranschaulicht das Problem:
package main import "fmt" func main() { x := 100.55 fmt.Println(x - float64(int(x))) }
Dieser Code gibt 0,5499999999999972 anstelle der erwarteten 0,55 aus. Der Grund dafür ist, dass die binäre Darstellung 100,55 nicht genau speichern kann und die in x gespeicherte resultierende Zahl etwas anders ist.
Lösungen:
Für Anzeige runden: Um irreführende Ausgaben zu vermeiden, runden Sie Gleitkommazahlen vor der Anzeige. Zum Beispiel:
fmt.Printf("%.2f\n", x) // Outputs: 0.55
Schlussfolgerung:
Das Verständnis der Einschränkungen der binären Darstellung und die Verwendung von Rundungen oder ganzzahlbasierten Berechnungen können Abhilfe schaffen Präzisionsfehler beim Konvertieren von float64 in int in Go.
Das obige ist der detaillierte Inhalt vonWie kann ich Präzisionsfehler beim Konvertieren von „float64' in „int' in Go vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!