Maison >développement back-end >Golang >Comment puis-je convertir en toute sécurité float64 en int dans Go, en tenant compte des problèmes de précision en virgule flottante ?
Lors de la conversion de valeurs float64 en int dans Go, des résultats inattendus peuvent survenir en raison des limitations de précision en virgule flottante. Comprendre ces limitations est essentiel pour éviter les erreurs.
Représentation à virgule flottante
Les ordinateurs stockent les nombres float64 à l'aide de la norme IEEE-754. Cette représentation binaire implique un nombre limité de bits (64 dans ce cas), qui peuvent ne pas représenter avec précision tous les nombres décimaux. Lors de la conversion d'un nombre décimal comme 100,55 en float64, le résultat est une approximation qui peut différer légèrement de la valeur d'origine.
Exemple : problème de précision en virgule flottante
Ce qui suit un extrait de code illustre ce problème :
package main import "fmt" func main() { x := 100.55 fmt.Println(x - float64(int(x))) // Output: 0.5499999999999972 }
Comme indiqué dans le résultat, la soustraction du float64(int(x)) à partir de la valeur float64 d'origine donne 0,5499999999999972 au lieu du 0,55 attendu. Cette différence est due au fait que la forme float64 de 100,55 est une approximation binaire légèrement différente de la valeur d'origine.
Éviter les erreurs à virgule flottante
Pour éviter les erreurs à virgule flottante lorsque lors de la conversion de float64 en int, envisagez les approches suivantes :
Conclusion
En comprenant les limites de la précision en virgule flottante et en utilisant des techniques appropriées, les développeurs peuvent convertissez efficacement les valeurs float64 en int dans Go tout en minimisant les erreurs et en maintenant le niveau de précision souhaité.
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!