Maison > développement back-end > Golang > Pourquoi l'erreur du compilateur Go apparaît-elle lors de la division par zéro avec des flotteurs ?

Pourquoi l'erreur du compilateur Go apparaît-elle lors de la division par zéro avec des flotteurs ?

DDD
Libérer: 2024-10-31 17:39:02
original
1046 Les gens l'ont consulté

Why Does Go Compiler Error Out on Division by Zero with Floats?

Erreur du compilateur Go : division zéro flottante

Dans Go, tenter de diviser un flottant fini par zéro entraîne une erreur de compilation. Ce comportement peut sembler contre-intuitif, d'autant plus que la division de deux nombres finis à virgule flottante aboutit généralement à une infinité, comme le montre l'exemple suivant :

<code class="go">func main() {
  var y float64 = 0.0
  var x float64 = 4.0 / y
  fmt.Println(x)
}</code>
Copier après la connexion

Sortie :

+Inf
Copier après la connexion

Cependant , diviser un flottant fini par zéro déclenche une erreur du compilateur :

<code class="go">func main() {
  var x float64 = 4.0 / 0.0
  fmt.Println(x)
}</code>
Copier après la connexion

Sortie :

prog.go:9:22: division by zero
Copier après la connexion

Raison de l'erreur du compilateur

Ceci le comportement découle de la représentation unique des constantes numériques dans Go. Contrairement à la plupart des langages de programmation qui mappent directement les constantes numériques aux types flottants IEEE754, Go traite les constantes numériques comme des valeurs exactes de précision arbitraire. Par conséquent, Go ne peut pas intrinsèquement stocker l'infini ou le zéro négatif.

Ce choix de conception offre des avantages en termes d'évitement des débordements dans les calculs constants, comme le démontre l'exemple suivant :

<code class="go">var x float64 = 1e1000 / 1e999 // yes, this is 10</code>
Copier après la connexion

Alternative pour représenter l'infini

Si vous avez spécifiquement besoin d'une valeur infinie, vous pouvez utiliser la fonction math.Inf(1) pour représenter l'infini positif ou math.Inf(-1) pour l'infini négatif.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal