Maison > développement back-end > Golang > Comment puis-je convertir en toute sécurité float64 en uint64 dans Go et préserver la précision ?

Comment puis-je convertir en toute sécurité float64 en uint64 dans Go et préserver la précision ?

Linda Hamilton
Libérer: 2024-12-17 13:54:10
original
498 Les gens l'ont consulté

How Can I Safely Convert float64 to uint64 in Go and Preserve Precision?

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))
}
Copier après la connexion

Le résultat sera :

6161047830682206208.000000
6161047830682206208
Copier après la connexion

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal