
currency Formatter教程多語言貨幣格式化與解析的10個實用技巧【免費下載鏈接】currencyCurrency handling for Go.項目地址: https://gitcode.com/gh_mirrors/cu/currencycurrency是一個為 Go 語言打造的貨幣處理庫基于 CLDR v48 數據內置約 370 個區域的完整貨幣格式化規則。它的Formatter格式化器可以把金額瞬間變成1.234,59 US$、$1,234.59、???? ??????等符合當地習慣的字符串也能把格式化后的字符串解析回金額。本教程面向新手用 10 個實用技巧帶你掌握 currency Formatter 的多語言貨幣格式化與解析??焖偕鲜? 行代碼完成貨幣格式化Formatter 的核心用法非常簡單指定區域locale→ 創建格式化器 → 調用Format。核心實現在 formatter.go。amount, _ : currency.NewAmount(1234.59, USD) locale : currency.NewLocale(de-AT) formatter : currency.NewFormatter(locale) fmt.Println(formatter.Format(amount)) // € 1.234,59 → 實際為 $ 1.234,59美元符號 同一個金額1234.59 USD在en-US下是$1,234.59在sr塞爾維亞下是1.234,59 US$。區域決定一切。區域格式化結果en-US$1,234.59en-CAUS$1,234.59de-CH$ 1234.59sr1.234,59 US$技巧 1用 AccountingStyle 讓負數顯示為會計樣式財務場景中負數通常顯示為($1,234.59)而不是-$1,234.59。只需開啟一個布爾字段formatter.AccountingStyle true // -1234.59 USD (en 區域) → ($1,234.59)該選項同時影響格式化與解析源碼見 formatter.go。技巧 2用 AddPlusSign 給正數加 號賬單里同時出現收支時給正數加更醒目formatter.AddPlusSign true // 123.99 USD → $123.99配合會計樣式正數為$1,234.59、負數為($1,234.59)正負一目了然。技巧 3用 MinDigits 與 MaxDigits 控制小數位數這是 Formatter 最強大的特性之一可精準控制顯示的小數位formatter.MinDigits 0 // 允許去掉末尾的 0 formatter.MaxDigits currency.DefaultDigits // 最多顯示到貨幣默認位數設置59 USD59.5 USD59.567 USD默認$59.00$59.50$59.57MinDigits0$59$59.5$59.567?? 注意MinDigits不能超過MaxDigits例如59.567在MinDigits3, MaxDigits2時會按MaxDigits四舍五入為$59.57。技巧 4用 RoundingMode 切換舍入策略格式化時的取整方式可通過RoundingMode自由切換默認是RoundHalfUp四舍五入舍入模式1234.455 USD的結果RoundHalfUp$1,234.46RoundHalfDown$1,234.45RoundUp$1,234.46RoundDown$1,234.45formatter.MaxDigits currency.DefaultDigits formatter.RoundingMode currency.RoundHalfDown技巧 5用 NoGrouping 關閉千位分隔符默認會按 CLDR 規則分組如$1,234,567.99在代碼高亮、日志輸出等場景下反而礙事formatter.NoGrouping true // 1234567.99 USD → $1234567.99不同區域的分組規則不同西班牙語es用點號1.234.567,99印地語hi采用印度計數法$12,34,567.99無需任何額外代碼。技巧 6用 CurrencyDisplay 切換符號、代碼或隱藏Formatter 支持三種貨幣展示方式默認是符號formatter.CurrencyDisplay currency.DisplayCode // USD 1,234.59 formatter.CurrencyDisplay currency.DisplayNone // 1,234.59展示模式1234.59 USDen 區域DisplaySymbol默認$1,234.59DisplayCodeUSD 1,234.59DisplayNone1,234.59當 UI 已經單獨展示了貨幣時DisplayNone特別好用。技巧 7用 SymbolMap 自定義貨幣符號某些業務要求統一符號比如始終顯示US$而非$formatter.SymbolMap[USD] US$ formatter.SymbolMap[EUR] EU // 6.99 USD → US$6.99技巧 8自動處理阿拉伯文、波斯文等非拉丁數字這是很多人忽略的驚喜只要區域匹配Formatter 會自動使用本地數字系統包括阿拉伯數字、波斯文擴展數字、孟加拉文、天城文印地語和緬甸文區域格式化12345678.90 USDar-EG埃及阿拉伯語????????????? US$fa波斯語$?????????????bn孟加拉語?,??,??,???.?? US$ 波斯語場景下甚至能顯示本地化貨幣名???? ??????。所有細節見 formatter.go 中的數字系統映射。技巧 9用 Parse 把格式化字符串還原為金額解析與格式化完美對稱Parse能自動還原區域分隔符、貨幣符號、會計括號甚至非拉丁數字locale : currency.NewLocale(de-AT) formatter : currency.NewFormatter(locale) formatter.AccountingStyle true amount, err : formatter.Parse(€ 1.234,00, EUR) // amount → 1234.00 EUR輸入區域解析結果$1,234.59en1234.59(1234.59)en會計樣式-1234.59€ 1.234,00de-AT1234.00????????????? US$ar-EG12345678.90解析邏輯含本地數字還原見 formatter.go 的Parse方法。技巧 10空區域回退 與 Amount 無縫協作空區域NewLocale()與en等價適合尚未確定用戶語言的場景。與 Amount 協作格式化只是展示層Amount才是真正支持任意精度十進制的金額類型避免浮點誤差定義在 amount.go。典型流程NewAmount→Add/Mul/Convert→Round→Formatamount, _ : currency.NewAmount(275.98, EUR) total, _ : amount.Mul(4) formatter : currency.NewFormatter(currency.NewLocale(fr)) fmt.Println(formatter.Format(total)) // 1 103,92 €完整的格式化/解析行為測試用例可在 formatter_test.go 中查看覆蓋了上百種區域與邊界情況。總結字段作用默認值AccountingStyle負數用($3.00)括號樣式falseAddPlusSign正數加falseNoGrouping關閉千位分隔falseMinDigits/MaxDigits小數位下限 / 上限上限同時決定舍入位數貨幣默認位 / 6RoundingMode舍入策略RoundHalfUpCurrencyDisplay符號 / 代碼 / 隱藏DisplaySymbolSymbolMap按貨幣代碼自定義符號空掌握以上 10 個技巧你基本可以應對電商、財務、國際化產品中的絕大多數貨幣展示需求。currency 庫用約 40KB 的數據提供了接近操作系統原生Intl的貨幣格式化體驗是 Go 生態中處理多語言貨幣的優秀選擇?!久赓M下載鏈接】currencyCurrency handling for Go.項目地址: https://gitcode.com/gh_mirrors/cu/currency創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考