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 » ?

WBOY
WBOYavant
2024-02-13 22:15:11348parcourir

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

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.

Contenu de la question

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à.

Solution

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer