百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
C

currency

> 编程语言
开源

Go 的货币处理

642 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

Go 的货币处理

货币

处理货币金额,提供货币信息和格式化。 由 CLDR v48 提供支持,仅占 ~40kb 的数据。 背景故事: https://bojanz.github.io/price-currency-handling-go/

特性

  1. 所有货币代码、其数字代码和小数位数。
  2. 所有区域的货币符号和格式。
  3. 国家映射 (国家代码 => 货币代码)。
  4. 结构化金额,具有值语义 (Fowler 的 Money 模式)
  5. 格式化器,用于格式化金额和解析格式化金额。
  6. 可以注册自定义货币,或覆盖现有货币。
go
    amount, _ := currency.NewAmount("275.98", "EUR")
    total, _ := amount.Mul("4")
    installments, _ := total.Split(3) // 367.98, 367.97, 367.97

    locale := currency.NewLocale("fr")
    formatter := currency.NewFormatter(locale)
    fmt.Println(formatter.Format(total)) // 1 103,92 €

    // Convert the amount to Iranian rial and show it in Farsi.
    total, _ = total.Convert("IRR", "45.538")
    total = total.Round()
    locale = currency.NewLocale("fa")
    formatter = currency.NewFormatter(locale)
    fmt.Println(formatter.Format(total)) // ‎ریال ۵۰٬۲۷۰

设计目标

实际的小数实现。

货币金额不能为浮点数。一旦有多种货币(在数据库中很难排序),或者需要小于最小单位的精度(由于商家或税收要求等),则存储整数小数单位(2.99 => 299)就会变得困难。因此需要一个真正的任意精度的小数类型。由于 Go 没有此类类型,因此使用了用户空间实现,由 cockroachdb/apd 包提供。Amount 结构提供了一个易于使用的抽象,允许将底层实现在未来更换而不破坏向后兼容性。

使用了 CLDR 地区的"现代"子集,从而减少了列表的长度。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Go

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言