Maison > développement back-end > Golang > Quelle fonction Go dois-je utiliser pour formater les nombres à virgule flottante : `fmt.Sprintf()` ou `strconv.FormatFloat()` ?

Quelle fonction Go dois-je utiliser pour formater les nombres à virgule flottante : `fmt.Sprintf()` ou `strconv.FormatFloat()` ?

Patricia Arquette
Libérer: 2024-11-12 09:50:02
original
358 Les gens l'ont consulté

Which Go Function Should I Use to Format Floating Point Numbers: `fmt.Sprintf()` or `strconv.FormatFloat()`?

Optimisation du formatage des nombres à virgule flottante dans Go

Le formatage des nombres à virgule flottante en chaînes est une tâche courante dans la programmation Go. Deux méthodes populaires sont disponibles : fmt.Sprintf() et strconv.FormatFloat(). Cet article approfondira les différences entre ces méthodes et vous guidera vers le choix optimal en fonction de vos besoins spécifiques.

fmt.Sprintf() vs strconv.FormatFloat()

fmt.Sprintf() et strconv.FormatFloat() utilisent la routine de formatage de chaîne sous-jacente de Go, garantissant qu'ils produisent des résultats identiques. Cependant, chaque méthode a ses propres atouts :

  • fmt.Sprintf(): Pratique lorsque la précision souhaitée est statique, car elle permet la construction de chaînes de format personnalisées.
  • strconv.FormatFloat() : Idéal lorsque la précision varie, car il élimine le besoin de construire manuellement des chaînes de format.

Arrondi et taille des bits Control

strconv.FormatFloat() offre un contrôle avancé sur l'arrondi des nombres via son argument final. Cet argument détermine la taille en bits de la valeur à virgule flottante avec laquelle la fonction de formatage traite l'entrée. Par exemple, dans votre exemple de code, l'utilisation de 32 indique que la fonction traite l'entrée comme une valeur float32.

Utilisation et exemple

Dans votre exemple fourni, ce qui suit Le code illustre comment formater un nombre float32 avec deux décimales :

var fAmt1 float32 = 999.99
var fAmt2 float32 = 222.22
var fResult float32 = float32(int32(fAmt1*100) + int32(fAmt2*100)) / 100
var sResult string = strconv.FormatFloat(float64(fResult), 'f', 2, 32)
println("FormatFloat value =" + sResult)
Copier après la connexion

Conclusion

Comprendre les différences entre fmt.Sprintf() et strconv.FormatFloat() est essentiel pour optimiser le formatage de vos nombres à virgule flottante dans Go. Tenez compte de la variabilité de la précision souhaitée et de la nécessité d'un contrôle de l'arrondi pour faire le meilleur choix pour votre application.

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