Heim > Backend-Entwicklung > Golang > Wie behebe ich Probleme mit der Währungsformatierung mit „Currency.Symbol' in Go?

Wie behebe ich Probleme mit der Währungsformatierung mit „Currency.Symbol' in Go?

Patricia Arquette
Freigeben: 2024-10-24 03:43:30
Original
804 Leute haben es durchsucht

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

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage