Währungsformatierung in Go mit dem Währungssymbol von golang.org/x/text/currency
Das golang.org/x/text/ Das Währungspaket bietet umfassende Unterstützung für die Formatierung von Währungswerten. In diesem Artikel wird gezeigt, wie Sie „Currency.Symbol“ nutzen können, um eine ordnungsgemäße Formatierung zu erreichen und häufige Probleme wie falsche Tausendertrennzeichen und Punktplatzierung zu beheben.
Problem:
Benutzer stoßen auf das Problem, dass Ihrer Ausgabe fehlen Tausendertrennzeichen und es werden fälschlicherweise Punkte anstelle von Kommas für die Währungsformatierung angezeigt.
Grundlegendes Problem:
Das Problem ergibt sich aus dem Standardverhalten von payment.Symbol, das gibt das Währungssymbol ohne länderspezifische Formatierung zurück. Infolgedessen werden Dezimalpunkte und Tausendertrennzeichen nicht korrekt angewendet.
Lösung 1: Ableiten des Währungsformats aus dem Sprachcode
Eine Lösung besteht darin, das Währungsformat aus dem abzuleiten Sprachcode, der im Sprachpaket verwendet wird. Wenn Sie die Sprache des Druckers auf das gewünschte Gebietsschema einstellen, wird die Ausgabe entsprechend den Konventionen des Gebietsschemas formatiert. Für brasilianisches Portugiesisch würde die Ausgabe beispielsweise als „R$ 123.456,78“ formatiert sein.
<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>
Lösung 2: ISO-Währungscodes analysieren und Sprache angeben
Ein anderer Ansatz besteht darin, ISO-Währungscodes zu analysieren und die Sprache für die Formatierung explizit festzulegen. Diese Methode bietet mehr Flexibilität bei der Angabe des gewünschten Ausgabeformats.
<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>
Überlegungen zu inkrementell gerundeten Währungen
Für Währungen, die inkrementell gerundet werden (z. B. um 0,05 oder 0,50) ist eine zusätzliche Verarbeitung erforderlich, um dem Decimal-Formatierer einen geeigneten IncrementString bereitzustellen. Dadurch wird sichergestellt, dass die gerundeten Werte ordnungsgemäß formatiert werden.
Fazit
Durch die Verwendung von Currency.Symbol in Verbindung mit sprachbewusstem Drucken können Entwickler eine präzise Währungsformatierung in Go erreichen , um die häufigen Probleme falscher Tausendertrennzeichen und falsch platzierter Dezimalpunkte zu beheben.
Das obige ist der detaillierte Inhalt vonWie behebe ich Probleme mit der Währungsformatierung mit „Currency.Symbol' in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!