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
Mary-Kate Olsenoriginal
2024-12-04 14:00:13712parcourir

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!

Déclaration:
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