Préserver la précision des virgules flottantes dans le marshaling JSON
Dans Go, la fonction json.Marshal() supprime souvent les zéros de fin des nombres à virgule flottante pendant la sérialisation JSON. Cela peut être problématique si l'application consommatrice nécessite la précision totale de la valeur d'origine.
Pour résoudre ce problème, envisagez de définir un type de données personnalisé qui encapsule la valeur à virgule flottante. Voici un exemple :
type PreservedFloat float64 func (f PreservedFloat) MarshalJSON() ([]byte, error) { // Preserve trailing zeros in the JSON representation. if float64(f) == float64(int(f)) { return []byte(strconv.FormatFloat(float64(f), 'f', 1, 32)), nil } return []byte(strconv.FormatFloat(float64(f), 'f', -1, 32)), nil }
Dans cette implémentation :
En utilisant PreservedFloat, vous peut contrôler la représentation JSON de vos valeurs à virgule flottante, garantissant qu'elles conservent leur précision même après le marshaling.
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!