Maison > développement back-end > Golang > Comment résoudre les problèmes de formatage des devises avec Currency.Symbol dans Go ?

Comment résoudre les problèmes de formatage des devises avec Currency.Symbol dans Go ?

Patricia Arquette
Libérer: 2024-10-24 03:43:30
original
805 Les gens l'ont consulté

How to Fix Currency Formatting Issues with Currency.Symbol in Go?

Formatage de la devise dans Go avec le symbole monétaire de golang.org/x/text/currency

Le golang.org/x/text/ Le package de devises fournit une prise en charge étendue pour le formatage des valeurs monétaires. Cet article montre comment exploiter Currency.Symbol pour obtenir un formatage approprié, en résolvant les problèmes courants tels que les séparateurs de milliers incorrects et le placement des points.

Problème :

Les utilisateurs rencontrent le problème qui leur sortie manque de séparateurs de milliers et affiche incorrectement des points au lieu de virgules pour le formatage de la devise.

Problème sous-jacent :

Le problème provient du comportement par défaut de monnaie.Symbol, qui renvoie le symbole de la devise sans aucun formatage spécifique aux paramètres régionaux. Par conséquent, les points décimaux et les séparateurs de milliers ne sont pas correctement appliqués.

Solution 1 : Déduire le format monétaire à partir du code de langue

Une solution consiste à déduire le format monétaire à partir du code de langue utilisé dans le package de langue. En définissant la langue de l'imprimante sur les paramètres régionaux souhaités, la sortie sera formatée selon les conventions des paramètres régionaux. Par exemple, pour le portugais brésilien, le résultat serait au format « R$ 123 456,78 ».

<code class="go">package main

import (
    "golang.org/x/text/currency"
    "golang.org/x/text/language"
    "golang.org/x/text/message"
)

func main() {
    unit, _ := currency.ParseISO("BRL")
    const valor = 12345678
    p := message.NewPrinter(language.BrazilianPortuguese)
    formatted := p.Sprint(currency.Symbol(unit.Amount(float64(valor) / 100)))
    println(formatted) // Output: R$ 123.456,78
}</code>
Copier après la connexion

Solution 2 : analyse des codes de devises ISO et spécification de la langue

Une autre approche consiste à analyser les codes de devise ISO et à définir explicitement la langue de formatage. Cette méthode offre plus de flexibilité dans la spécification du format de sortie souhaité.

<code class="go">package main

import (
    "golang.org/x/text/currency"
    "golang.org/x/text/language"
    "golang.org/x/text/message"
    "golang.org/x/text/number"
)

func main() {
    unit, _ := currency.ParseISO("BRL")
    const valor = 12345678
    lang := language.Portuguese
    p := message.NewPrinter(lang)
    formatted := p.Sprintf(
        number.Format("%q%v",
            currency.Symbol(unit.Amount(float64(valor) / 100), lang),
            number.Decimal(valor, number.Scale(2)),
        ))
    println(formatted) // Output: R$ 123.456,78
}</code>
Copier après la connexion

Considérations relatives aux devises arrondies de manière incrémentielle

Pour les devises arrondies de manière incrémentielle (par exemple, de 0,05 ou 0.50), un traitement supplémentaire est nécessaire pour fournir au formateur décimal une IncrementString appropriée. Cela garantit que les valeurs arrondies sont formatées de manière appropriée.

Conclusion

En utilisant Currency.Symbol en conjonction avec l'impression sensible au langage, les développeurs peuvent obtenir un formatage précis des devises dans Go , résolvant les problèmes courants de séparateurs de milliers incorrects et de points décimaux mal placés.

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
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