Maison > développement back-end > Golang > Quel est le meilleur pour formater les nombres à virgule flottante dans Go : `fmt.Sprintf()` ou `strconv.FormatFloat()` ?

Quel est le meilleur pour formater les nombres à virgule flottante dans Go : `fmt.Sprintf()` ou `strconv.FormatFloat()` ?

Linda Hamilton
Libérer: 2024-11-09 04:09:02
original
727 Les gens l'ont consulté

Which is Better for Formatting Floating-Point Numbers in Go: `fmt.Sprintf()` or `strconv.FormatFloat()`?

Formatage des nombres à virgule flottante dans Go : comparaison de fmt.Sprintf() et strconv.FormatFloat()

Lors du formatage de nombres à virgule flottante en chaînes dans Go , deux méthodes populaires émergent : fmt.Sprintf() et strconv.FormatFloat(). Cependant, le choix de l'approche optimale dépend d'exigences spécifiques.

Utilisation et différences

Fmt.Sprintf() et strconv.FormatFloat() utilisent le même formatage de chaîne sous-jacent. mécanisme. Cependant, ils diffèrent par leur syntaxe et leur flexibilité.

  • fmt.Sprintf() : Nécessite la construction d'une chaîne de format, permettant un contrôle précis du formatage.
  • strconv.FormatFloat() : Fournit une syntaxe plus concise, en particulier lorsque la précision du formatage est variable.

Choisir la meilleure méthode

  • Précision statique : Si la précision de formatage est constante, l'une ou l'autre méthode peut être utilisé. Cependant, fmt.Sprintf() peut être plus efficace en évitant la construction de chaînes de format.
  • Précision variable : strconv.FormatFloat() excelle dans les situations où la précision de formatage varie, éliminant la nécessité de créer dynamiquement des chaînes de format.

Arrondi Control

Le dernier argument de strconv.FormatFloat(), connu sous le nom de bitSize, contrôle la façon dont les valeurs sont arrondies. Il représente le nombre de bits significatifs dans la valeur à virgule flottante d'origine, garantissant un arrondi précis en fonction du type de données.

Exemple :

L'extrait de code fourni démontre à la fois méthodes :

package main

import (
    "fmt"
    "strconv"
)

func main() {
    var fAmt1 float32 = 999.99
    var fAmt2 float32 = 222.22

    // Calculate the result and format using Sprintf
    fResult := float32(int32(fAmt1*100) + int32(fAmt2*100)) / 100
    sResult1 := fmt.Sprintf("%.2f", fResult)

    // Calculate the result and format using FormatFloat
    sResult2 := strconv.FormatFloat(float64(fResult), 'f', 2, 32)

    fmt.Println("Sprintf value:", sResult1)
    fmt.Println("FormatFloat value:", sResult2)
}
Copier après la connexion

Conclusion

Le choix entre fmt.Sprintf() et strconv.FormatFloat() dépendent des exigences spécifiques de l'application. Pour une précision constante et un formatage efficace, fmt.Sprintf() est une option appropriée. Pour une précision variable et un contrôle de l'arrondi, strconv.FormatFloat() fournit une approche pratique et flexible.

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