Golang : how can I convert a float64 currency representation to the lowest denomination?(乘以 100 不适用于所有货币)

标签 go floating-point type-conversion decimal currency

我正在处理金钱的 float64 表示。例如,2.9 美元表示 2.90 美元,因此如果我需要将其转换为该货币的最低面额,我只需乘以 100(2.9*100= 290 美分)。

这适用于大多数主要货币。但是,例如在日本,float64 表示不会有小数,因为日元已经是最低表示。如果我得到 float64(290) 日元,如果我试图获得最低面额,乘以 100 会得到多余的日元 - 它应该保持原样。

当某些货币乘以 100 时,除了特殊大小写之外,处理此问题的最佳方法是什么?

编辑:我拥有的两条信息是浮点表示法和 ISO 货币代码。

最佳答案

不要用 float 换钱。 float 是一个近似值。 float64(所有 IEEE-754 64 位 float 的集合)符合 IEEE 浮点运算标准 (IEEE 754)。

维基百科:IEEE 754


使用 ISO 4217 标准确定次要货币单位指数。大多数货币为 2 (10² = 100),日元 (JPY) 为 0 (10⁰ = 1)。

维基百科:ISO 4217

Current currency & funds code list

关于Golang : how can I convert a float64 currency representation to the lowest denomination?(乘以 100 不适用于所有货币),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52674843/

相关文章:

go - 在 Web 服务器应用程序 golang 中使用键值存储

python - 为什么打印 -0.0?

numpy - 如何设置numpy浮点精度?

python - 如何将二进制数的字符串转换为二进制数?

rust - 类型不匹配与特征迭代器作为函数参数

c++ - 为什么 g++ 在给定情况下明确定义明确时会说格式错误的缩小?

go - 哪种新语言最适合编写操作系统

go - Golang 中 smtp 客户端的自定义拨号器?

go - 使用 go 的 HTTP PUT 请求处理程序

java - 使用 Double 做财务软件