大多数时候,我看到建议将货币表示为最基本的单位;并使用 64 位无符号整数来提供最大容量。从表面上看,这似乎很好,但是如果我想分割 1 美分呢?在 Java/Scala 中,我也看到推荐用于处理金钱的 BigDecimal 类型将跟踪一分钱的分数,0.01/2 = 0.005但是除以 64 位无符号整数,1/2 = 0我正在尝试编写一些处理金钱的 Go,并想知道使用哪种类型(只需使用 uint64 或找到其他东西?)。
2 回答
狐的传说
TA贡献1804条经验 获得超3个赞
int64
(或uint64
) 仍可用于表示带有美分分数的货币金额。例如,如果你想操作的最低金额为0.01
美分,那么你可以代表1
占为100
,然后半美分将是50
和1/100
有半分会1
。这种表示非常有效(从性能和内存使用的角度来看),但不是很灵活。需要注意的事项有:
~2^64/100
您可以使用此方法表示最大值(美分)如果最大精度发生变化,则需要对应用程序及其存储的数据进行更改
所有算术运算都需要仔细实施,同时考虑四舍五入
- 2 回答
- 0 关注
- 215 浏览
添加回答
举报
0/150
提交
取消