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?

WBOY
WBOYnach vorne
2024-02-13 22:15:11402Durchsuche

Go 中是否有一个标准类型可以进行“精确除法”?

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.

Frageninhalt

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.

Lösung

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen