Test de l'égalité des nombres flottants dans Go
Lorsque vous travaillez avec des nombres à virgule flottante dans Go, il peut être nécessaire de déterminer si un nombre donné la valeur float représente un nombre entier. Bien que tenter d'utiliser l'opérateur modulo (%) puisse sembler une approche simple, il est important de noter que cet opérateur n'est pas défini pour les valeurs float64.
Utilisation de la conversion entière
Une approche pour tester l'égalité flottante des nombres entiers consiste à comparer la valeur flottante à une valeur entière convertie. Si la valeur flottante et la valeur entière convertie sont égales, alors le flottant est considéré comme un nombre entier. Ceci peut être réalisé en utilisant la syntaxe suivante :
if a == float64(int64(a)) { // a is a whole number }
Utilisation de la fonction math.Trunc
Pour les cas où la valeur float peut dépasser la plage d'un int64, une approche alternative consiste à utiliser la fonction math.Trunc. Cette fonction tronque la partie fractionnaire d'un nombre flottant, renvoyant une valeur entière. En comparant la valeur flottante d'origine à sa valeur tronquée, il est possible de déterminer si le flottant est un nombre entier :
if a == math.Trunc(a) { // a is a whole number }
Exemple
Le code Go suivant démontre l'utilisation de la fonction math.Trunc pour déterminer correctement si une valeur flottante représente un nombre entier :
package main import ( "fmt" "math" ) func main() { var a float64 = 2.00 if a == math.Trunc(a) { fmt.Println("yay") } else { fmt.Println("you fail") } }
Dans cet exemple, la valeur flottante 2,00 est testé et le résultat sera "oui" puisque 2,00 est un nombre entier.
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!