Conversion Float64 en Uint64 : garantir la précision
Les nombres à virgule flottante, représentés par float64 dans Go, stockent des valeurs avec une précision variable. Lors de la conversion d'un float64 en un type entier comme uint64, il est important de comprendre la perte potentielle de précision.
La norme IEEE 754 définit la précision de float64 à 53 bits, ce qui limite le nombre de chiffres pouvant être représentés. précisément. Les constantes, cependant, peuvent être représentées avec une précision arbitraire.
Considérons l'exemple suivant :
package main import "fmt" func main() { var n float64 = 6161047830682206209 fmt.Printf("%f\n", n) fmt.Printf("%d\n", uint64(n)) }
Le résultat sera :
6161047830682206208.000000 6161047830682206208
Comme nous pouvons le voir, le nombre stocké dans n n'est pas exactement égal à la constante 6161047830682206209, en raison de la précision limitée de float64. Lors de la conversion de cette valeur en uint64, la partie fractionnaire est ignorée, ce qui entraîne une perte de précision.
Pour garantir la précision de la conversion, nous pouvons utiliser une méthode plus sûre :
func main() { const n = 6161047830682206209 var u uint64 = uint64(n) fmt.Printf("%f\n", float64(u)) fmt.Printf("%d\n", u) }
Dans Dans cet exemple, nous attribuons directement la constante à une variable uint64, garantissant que la valeur exacte est conservée. La conversion ultérieure en float64 est précise et produira la valeur d'origine.
Comprendre les limites de la précision en virgule flottante est crucial lors de la conversion entre différents types de données. En examinant attentivement les exigences de précision, nous pouvons garantir que le processus de conversion n'introduit aucune perte de données involontaire.
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!