Maison >développement back-end >Golang >Comment puis-je éviter les erreurs de précision lors de la conversion de « float64 » en « int » dans Go ?
Éviter les erreurs de précision lors de la conversion Float-to-Int dans Go
Lors de la conversion des valeurs float64 en int dans Go, les programmeurs rencontrent souvent des erreurs de précision . Ces erreurs surviennent en raison des limitations inhérentes à la représentation des nombres binaires sur les ordinateurs.
Comprendre la représentation binaire
Un float64 représente un nombre utilisant la norme IEEE-754, allouant 53 bits pour les chiffres et 11 bits pour l'exposant. Cependant, certains nombres, comme 100,55, ne peuvent pas être représentés exactement dans cette structure binaire finie.
Le code :
Le code suivant illustre le problème :
package main import "fmt" func main() { x := 100.55 fmt.Println(x - float64(int(x))) }
Ce code génère 0,54999999999999972 au lieu du 0,55 attendu. La raison en est que la représentation binaire ne peut pas stocker précisément 100,55 et que le nombre résultant stocké dans x est légèrement différent.
Solutions :
Arrondir pour l'affichage : Pour éviter les résultats trompeurs, arrondissez les nombres à virgule flottante avant de les afficher. Par exemple :
fmt.Printf("%.2f\n", x) // Outputs: 0.55
Conclusion :
Comprendre les limites de la représentation binaire et utiliser des arrondis ou des calculs basés sur des nombres entiers peuvent atténuer erreurs de précision lors de la conversion de float64 en int dans Go.
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!