为了账号安全,请及时绑定邮箱和手机立即绑定

使用什么类型来正确处理奇数分的除法?

使用什么类型来正确处理奇数分的除法?

Go
慕桂英4014372 2021-10-25 20:02:20
大多数时候,我看到建议将货币表示为最基本的单位;并使用 64 位无符号整数来提供最大容量。从表面上看,这似乎很好,但是如果我想分割 1 美分呢?在 Java/Scala 中,我也看到推荐用于处理金钱的 BigDecimal 类型将跟踪一分钱的分数,0.01/2 = 0.005但是除以 64 位无符号整数,1/2 = 0我正在尝试编写一些处理金钱的 Go,并想知道使用哪种类型(只需使用 uint64 或找到其他东西?)。
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

您可以big.Rat用于任意大小的有理数。然后,您可以根据自己的喜好拆分数量,而不会失去任何精度。


查看完整回答
反对 回复 2021-10-25
?
狐的传说

TA贡献1804条经验 获得超3个赞

int64(或uint64) 仍可用于表示带有美分分数的货币金额。例如,如果你想操作的最低金额为0.01美分,那么你可以代表1占为100,然后半美分将是501/100有半分会1。这种表示非常有效(从性能和内存使用的角度来看),但不是很灵活。需要注意的事项有:

  • ~2^64/100您可以使用此方法表示最大值(美分)

  • 如果最大精度发生变化,则需要对应用程序及其存储的数据进行更改

  • 所有算术运算都需要仔细实施,同时考虑四舍五入


查看完整回答
反对 回复 2021-10-25
  • 2 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信