尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

currency Formatter教程:多语言货币格式化与解析的10个实用技巧

currency Formatter教程:多语言货币格式化与解析的10个实用技巧 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 的多语言货币格式化与解析。快速上手3 行代码完成货币格式化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 生态中处理多语言货币的优秀选择。【免费下载链接】currencyCurrency handling for Go.项目地址: https://gitcode.com/gh_mirrors/cu/currency创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表