Maison  >  Article  >  développement back-end  >  golang virgule flottante en entier

golang virgule flottante en entier

WBOY
WBOYoriginal
2023-05-12 21:33:071495parcourir

Golang est un langage de programmation hautes performances qui prend en charge plusieurs types de données, notamment les nombres à virgule flottante et les entiers. Dans le développement réel, nous devons parfois convertir des nombres à virgule flottante en nombres entiers pour certains calculs et traitements. Cet article présentera les méthodes et techniques de conversion de nombres à virgule flottante en nombres entiers dans Golang.

  1. Casting

Le casting peut être utilisé dans Golang pour convertir des nombres à virgule flottante en nombres entiers. Par exemple :

f := 3.14
i := int(f)

Dans cet exemple, nous convertissons le nombre à virgule flottante 3,14 en un entier et obtenons la valeur entière 3. Il convient de noter que la conversion de type cast supprimera la partie décimale et ne conservera que la partie entière. Si nous donnons un nombre négatif, la partie décimale sera arrondie vers zéro. Par exemple :

f := -3.14
i := int(f)

Dans cet exemple, la valeur de i est -3, et non -4. En effet, le casting arrondit la partie fractionnaire vers zéro au lieu de l'arrondir.

  1. fonction du package mathématique

Le package mathématique de Golang fournit certaines fonctions pour convertir des nombres à virgule flottante en nombres entiers, tels que Round, Ceil et Floor . Ces fonctions peuvent arrondir, arrondir au chiffre supérieur ou inférieur selon les besoins. Par exemple :

f := 3.14
i := int(math.Round(f))
j := int(math.Ceil(f))
k := int(math.Floor(f))

Dans cet exemple, nous utilisons la fonction Round pour arrondir le nombre à virgule flottante 3,14 à l'entier le plus proche pour obtenir la valeur entière 3 ; nous utilisons la fonction Ceil pour arrondir le nombre à virgule flottante ; 3,14 pour obtenir la valeur entière 4 ; Utilisez la fonction Floor pour arrondir le nombre à virgule flottante 3,14 pour obtenir la valeur entière 3.

Il convient de noter que ces fonctions renvoient toutes des valeurs de type float64, qui doivent être converties en entiers à l'aide de cast.

  1. fonctions du package strconv

Le package strconv dans Golang fournit certaines fonctions de conversion entre les types chaîne et numériques. Parmi elles, les fonctions Atoi et ParseInt peuvent convertir les nombres de type chaîne en types entiers. Par exemple :

s := "123"
i, _ := strconv.Atoi(s)
j, _ := strconv.ParseInt(s, 10, 0)

Dans cet exemple, nous utilisons la fonction Atoi pour convertir la chaîne "123" en un type entier et obtenir la valeur entière 123 ; la fonction ParseInt peut également être utilisée pour convertir la chaîne ; "123" à un type entier, le paramètre radix est 10, indiquant décimal, et le paramètre bitSize est 0, indiquant la détermination automatique du type entier. Il convient de noter que la fonction ParseInt peut également convertir des chaînes en entiers dans d'autres bases, telles que hexadécimal, octal, etc.

  1. Contrôle des nombres décimaux

Lors de la conversion de nombres à virgule flottante en nombres entiers, vous devez faire attention aux problèmes de précision. Étant donné que les nombres à virgule flottante sont approximatifs lorsqu'ils sont stockés dans un ordinateur, des erreurs de précision peuvent survenir. Si l'erreur lors de la conversion d'un nombre à virgule flottante en nombre entier dépasse le nombre de chiffres de la partie entière, le résultat peut être inexact. Par exemple :

f := 1.0000000009
i := int(f)

Dans cet exemple, le nombre à virgule flottante 1.0000000009 est représenté par 1.0000000009000001 en Golang, et lorsqu'il est converti en nombre entier, la valeur entière 1 est obtenue, et non 2. En effet, l'erreur de précision dépasse le nombre de chiffres dans la partie entière.

Pour éviter cette situation, vous pouvez réduire l'erreur de précision en contrôlant le nombre de points décimaux. Par exemple :

f := 1.0000000009
f = math.Round(f*1000000000) / 1000000000
i := int(f)

Dans cet exemple, nous contrôlons le nombre de points décimaux dans 9 chiffres et utilisons la fonction math.Round suivante pour arrondir le nombre à virgule flottante 1,0000000009 à la décimale la plus proche pour obtenir le valeur à virgule flottante 1,000000001 et convertissez-la en un type entier, ce qui donne une valeur entière de 1. De cette façon, vous pouvez éviter les erreurs de précision dépassant le nombre de chiffres dans la partie entière tout en conservant une grande précision.

Résumé

Lors de la conversion de nombres à virgule flottante Golang en nombres entiers, vous pouvez utiliser la conversion de type forcée, la fonction de package mathématique, la fonction de package strconv, etc. Vous devez prêter attention aux problèmes de précision, contrôler le nombre de points décimaux pour réduire les erreurs et choisir les méthodes et fonctions appropriées pour améliorer la lisibilité et les performances du code.

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