Heim > Backend-Entwicklung > Golang > Wie kann ich Präzisionsfehler beim Konvertieren von „float64' in „int' in Go vermeiden?

Wie kann ich Präzisionsfehler beim Konvertieren von „float64' in „int' in Go vermeiden?

Barbara Streisand
Freigeben: 2024-12-17 02:24:25
Original
427 Leute haben es durchsucht

How Can I Avoid Precision Errors When Converting `float64` to `int` in Go?

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)))    
}
Nach dem Login kopieren

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:

  1. 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
    Nach dem Login kopieren
  2. Ganzzahlen für Berechnungen verwenden: Wenn Präzision entscheidend ist, sollten Sie die Verwendung von Ganzzahlen für Berechnungen in Betracht ziehen. Behandeln Sie Währungen beispielsweise in Cent statt in Dollar.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage