Golang 中正確的貨幣格式
在使用貨幣格式時,必須考慮每種貨幣和語言組合的具體要求。使用 golang.org/x/text/currency,您可以根據本機約定輕鬆格式化值。但是,您在獲得所需的輸出時可能會遇到一些挑戰。
使用貨幣符號
在您的程式碼中,您使用currency.Symbol 來擷取貨幣符號指定的 ISO 代碼。但是,在不提供語言上下文的情況下使用此方法時,您可能無法獲得預期的分隔符號或數字格式。
合併本機格式
而不是嘗試手動建立您可以利用顯示和訊息包根據語言和區域自動檢索適當的格式。以下是範例:
<code class="go">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)) }</code>
此函數接受值、貨幣代碼和語言代碼,並傳回格式正確的貨幣字串。
處理增量單位
某些貨幣有固定的增加單位,例如 5 或 10 美分。為了解決這個問題,您可以使用number 套件來指定增量:
<code class="go">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) }</code>
透過提供語言上下文,從語言代碼推斷貨幣格式,並考慮增量單位,您可以創建靈活且準確的增量使用golang.org/x/text/currency 的Golang 貨幣格式化解決方案。
以上是如何在 Golang 中處理貨幣格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!