Maison > Article > développement back-end > Existe-t-il un type standard dans Go qui peut effectuer une « division exacte » ?
Existe-t-il un type standard dans Go qui peut effectuer une « division exacte » ? C’est une question courante, répondons-y. Dans Go, il n'existe pas de type standard capable d'effectuer une « division exacte » car les types entiers dans Go sont à précision fixe et ne peuvent pas représenter des décimales à précision infinie. Cependant, Go propose une solution en utilisant des types à virgule flottante pour les opérations de division. Les types de nombres à virgule flottante dans Go incluent float32 et float64, qui peuvent représenter une plus grande plage de nombres, mais en raison des caractéristiques des nombres à virgule flottante, il peut y avoir une perte de précision. Par conséquent, si une division exacte est requise, il est recommandé d'utiliser une bibliothèque de grands nombres (telle que le package math/big) pour la gérer. Cela garantit des résultats précis lors de l’exécution des opérations de division.
Je veux faire une "division exacte" en go. Existe-t-il des types standards ?
Par exemple, je souhaite stocker les valeurs "1/3" et "2/3" et pouvoir les ajouter.
Je peux définir mon propre type comme ceci :
type mytype struct { numerator int denominator int }
Et définissez la fonction suivante :
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} }
Mais il pourrait y avoir une manière plus élégante de procéder, ou un "type standard" qui le fait déjà.
Je ne sais pas big.Rat
. C'est tout ce dont j'ai besoin! Merci pour votre aide
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!