Maison > développement back-end > Golang > Pourquoi Go Division renvoie-t-il 0 au lieu de 0,3 ?

Pourquoi Go Division renvoie-t-il 0 au lieu de 0,3 ?

Mary-Kate Olsen
Libérer: 2024-12-04 14:00:13
original
712 Les gens l'ont consulté

Why Does Go Division Return 0 Instead of 0.3?

Division en Go : Comprendre le mystère 0.3

Lorsque vous effectuez une opération de division en Go, vous pouvez rencontrer un résultat inattendu de 0 au lieu de le 0,3 attendu. Ce comportement particulier est dû à l'utilisation de constantes non typées dans l'opération.

En Go, les opérandes des opérations binaires sont initialement traitées comme des constantes non typées. Le type d'opération résultant est déterminé par les opérandes en utilisant un ordre de priorité spécifique. Pour les constantes entières comme 3 et 10, le résultat est un entier non typé, donc 0.

Pour obtenir un résultat à virgule flottante, il faut s'assurer qu'au moins un opérande est une constante à virgule flottante. En utilisant une conversion de type explicite, comme le montrent les expressions ci-dessous, vous pouvez obtenir la précision souhaitée :

  • 3,0 / 10,0
  • 3,0 / 10
  • 3 / 10,0

Vous pouvez également convertir les opérandes entiers en float64 explicitement :

  • float64(i3) / 10
  • 3 / float64(i10)

Ces modifications forcent l'opération à utiliser l'arithmétique à virgule flottante, donnant le résultat escompté de 0,3.

Par conséquent, lors de l'exécution d'opérations arithmétiques dans Allez, soyez attentif au type de constantes utilisées. Pour éviter ce problème spécifique de division, assurez-vous que vos opérandes sont soit des constantes à virgule flottante explicites, soit qu'ils subissent une conversion de type explicite en float64.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal