Formatage approprié des devises dans Golang
Lorsque vous travaillez avec le formatage des devises, il est essentiel de prendre en compte les exigences spécifiques de chaque devise et combinaison de langues. En utilisant golang.org/x/text/currency, vous pouvez facilement formater les valeurs en fonction des conventions locales. Cependant, vous pourriez rencontrer quelques difficultés pour obtenir le résultat souhaité.
Utilisation des symboles monétaires
Dans votre code, vous utilisez la devise.Symbol pour récupérer le symbole monétaire du code ISO spécifié. Cependant, lorsque vous utilisez cette méthode sans fournir de contexte linguistique, vous risquez de ne pas obtenir les séparateurs ou le formatage des nombres attendus.
Incorporation de formats locaux
Au lieu d'essayer de créer manuellement votre format, vous pouvez exploiter les packages d'affichage et de messages pour récupérer automatiquement le format approprié en fonction de la langue et de la région. Voici un exemple :
import (
"fmt"
"golang.org/x/text/currency"
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func formatCurrency(value int64, currencyCode string, languageCode string) string {
lang, _ := language.Parse(languageCode)
p := message.NewPrinter(lang)
unit, _ := currency.ParseISO(currencyCode)
return p.Sprintf("%v%v", currency.Symbol(unit), float64(value))
}
Cette fonction prend en compte une valeur, un code de devise et un code de langue et renvoie une chaîne de devise correctement formatée.
Gestion des unités d'incrémentation
Certaines les devises ont une unité d'incrément fixe, telle que 5 ou 10 cents. Pour en tenir compte, vous pouvez utiliser le package number pour spécifier l'incrément :
import (
"golang.org/x/text/currency"
"golang.org/x/text/number"
)
func formatWithIncrement(value int64, currencyCode string, increment int) string {
unit, _ := currency.ParseISO(currencyCode)
scale, inc := currency.Cash.Rounding(unit)
dec := number.Decimal(float64(value), number.Scale(scale), number.IncrementString(fmt.Sprintf("%.2f", float64(inc))))
return fmt.Sprintf("%v%v", currency.Symbol(unit), dec)
}
En fournissant le contexte linguistique, en déduisant le format monétaire à partir des codes de langue et en prenant en compte les unités d'incrémentation, vous pouvez créer des solutions de formatage monétaire flexibles et précises dans Golang à l'aide de golang.org/x/text/currency.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3