Golang 中正確的貨幣格式
使用貨幣格式時,必須考慮每種貨幣和語言組合的具體要求。使用 golang.org/x/text/currency,您可以根據本機約定輕鬆格式化值。但是,您在獲得所需的輸出時可能會遇到一些挑戰。
使用貨幣符號
在您的代碼中,您使用currency.Symbol 來檢索貨幣符號指定的 ISO 代碼。但是,在不提供語言上下文的情況下使用此方法時,您可能無法獲得預期的分隔符號或數字格式。
合併本地格式
而不是嘗試手動建立您可以利用顯示和訊息包根據語言和區域自動檢索適當的格式。這是一個範例:
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))
}
此函數接受值、貨幣代碼和語言代碼,並傳回格式正確的貨幣字串。
處理增量單位
某些貨幣有固定的增量單位,例如 5 或 10 美分。為了解決這個問題,您可以使用數位套件來指定增量:
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)
}
透過提供語言上下文、從語言程式碼推斷貨幣格式並考慮增量單位,您可以使用 golang.org/x/text/currency 在 Golang 中創建靈活且準確的貨幣格式化解決方案。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3