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>
Sortie :
+Inf
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>
Sortie :
prog.go:9:22: division by zero
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>
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!