Richtige Währungsformatierung in Golang
Bei der Arbeit mit der Währungsformatierung ist es wichtig, die spezifischen Anforderungen für jede Währungs- und Sprachkombination zu berücksichtigen. Mit golang.org/x/text/currency können Sie Werte ganz einfach basierend auf lokalen Konventionen formatieren. Es können jedoch einige Schwierigkeiten auftreten, die gewünschte Ausgabe zu erhalten.
Währungssymbole verwenden
In Ihrem Code verwenden Sie „currency.Symbol“, um das Währungssymbol für abzurufen angegebenen ISO-Code. Wenn Sie diese Methode jedoch ohne Bereitstellung eines Sprachkontexts verwenden, erhalten Sie möglicherweise nicht die erwarteten Trennzeichen oder Zahlenformatierungen.
Einbeziehen lokaler Formate
Anstatt zu versuchen, sie manuell zu erstellen Wenn Sie Ihr Format anpassen, können Sie die Anzeige- und Nachrichtenpakete nutzen, um basierend auf der Sprache und Region automatisch das geeignete Format abzurufen. Hier ist ein Beispiel:
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))
}
Diese Funktion nimmt einen Wert, einen Währungscode und einen Sprachcode auf und gibt eine ordnungsgemäß formatierte Währungszeichenfolge zurück.
Handhabung von Inkrementierungseinheiten
Einige Währungen haben eine feste Schritteinheit, beispielsweise 5 oder 10 Cent. Um dies zu berücksichtigen, können Sie das Zahlenpaket verwenden, um das Inkrement anzugeben:
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)
}
Durch die Bereitstellung des Sprachkontexts, das Ableiten des Währungsformats aus Sprachcodes und die Berücksichtigung von Inkrementeinheiten können Sie mithilfe von golang.org/x/text/currency flexible und genaue Währungsformatierungslösungen in Golang erstellen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3