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