Maison >développement back-end >Golang >Pourquoi la division d'entiers de Go donne-t-elle 0 au lieu d'un nombre à virgule flottante ?

Pourquoi la division d'entiers de Go donne-t-elle 0 au lieu d'un nombre à virgule flottante ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 16:37:11751parcourir

Why Does Go's Division of Integers Result in 0 Instead of a Floating-Point Number?

Division à virgule flottante dans Go

Malgré l'apparente simplicité de la division, la mise en œuvre de cette opération dans Go peut rencontrer des résultats inattendus. Comme illustré dans l'exemple fourni :

fmt.Println(3/10)

Cet extrait de code donne étonnamment "0" au lieu du "0,3" attendu. Pour comprendre ce comportement, il est crucial d'approfondir les subtilités du système de types de Go.

Dans Go, les opérandes de l'opérateur de division sont des constantes non typées, ce qui signifie que leur type de données n'est pas explicitement spécifié. Selon la spécification Go, lorsqu'il s'agit d'opérations binaires avec des constantes non typées, le type de données du résultat est déterminé par la priorité des types impliqués. Dans ce cas, les deux opérandes sont des entiers, ce qui donne une expression entière non typée avec une valeur de "0".

Pour obtenir un résultat constant à virgule flottante, l'un des opérandes doit être explicitement tapé comme un flottant. Voici quelques exemples qui le démontrent :

3.0 / 10.0
3.0 / 10
3 / 10.0

Dans ces expressions, la constante à virgule flottante (par exemple, « 3,0 ») garantit que le résultat est également une constante à virgule flottante avec une valeur de « 0,3 ». ".

Alternativement, si un opérande est une variable typée, le type de données de la variable typée prévaut. Par exemple, les expressions suivantes convertissent les variables entières en valeurs float64 et donnent "0,3" :

var i3 = 3
var i10 = 10
fmt.Println(float64(i3) / 10)
fmt.Println(3 / float64(i10))

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