Heim > Artikel > Backend-Entwicklung > Gibt es in Go einen Standardtyp, der eine „exakte Division“ durchführen kann?
Gibt es in Go einen Standardtyp, der eine „exakte Division“ durchführen kann? Dies ist eine häufig gestellte Frage. Beantworten wir sie. In Go gibt es keinen Standardtyp, der eine „exakte Division“ durchführen kann, da die Ganzzahltypen in Go eine feste Genauigkeit haben und keine Dezimalzahlen mit unendlicher Genauigkeit darstellen können. Go bietet jedoch eine Lösung, indem es Gleitkommatypen für Divisionsoperationen verwendet. Zu den Gleitkommazahltypen in Go gehören float32 und float64, die einen größeren Zahlenbereich darstellen können, aber aufgrund der Eigenschaften von Gleitkommazahlen kann es zu einem Genauigkeitsverlust kommen. Wenn eine exakte Division erforderlich ist, wird daher empfohlen, eine große Zahlenbibliothek (z. B. das Paket math/big) zu verwenden, um diese zu verarbeiten. Dies gewährleistet genaue Ergebnisse bei der Durchführung von Divisionsoperationen.
Ich möchte in Go eine „exakte Division“ durchführen. Gibt es Standardtypen?
Zum Beispiel möchte ich die Werte „1/3“ und „2/3“ speichern und hinzufügen können.
Ich kann meinen eigenen Typ so definieren:
type mytype struct { numerator int denominator int }
Und definieren Sie die folgende Funktion:
func (a MyType) Plus(b MyType) MyType { d := a.Denominator * b.Denominator n := (a.Numerator * b.Denominator) + (b.Numerator * a.Denominator) return MyType{Numerator: n, Denominator: d} }
Aber es könnte eine elegantere Möglichkeit geben, dies zu tun, oder einen „Standardtyp“, der dies bereits tut.
Ich weiß es nicht big.Rat
. Das ist alles was ich brauche! Vielen Dank für Ihre Hilfe
Das obige ist der detaillierte Inhalt vonGibt es in Go einen Standardtyp, der eine „exakte Division“ durchführen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!