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

大多数时候,我看到建议将货币表示为最基本的单位;并使用 64 位无符号整数来提供最大容量。

从表面上看,这似乎很好,但是如果我想分割 1 美分呢?

在 Java/Scala 中,我也看到推荐用于处理金钱的 BigDecimal 类型将跟踪一分钱的分数,0.01/2 = 0.005

但是除以 64 位无符号整数,1/2 = 0

我正在尝试编写一些处理金钱的 Go,并想知道使用哪种类型(只需使用 uint64 或找到其他东西?)。


慕桂英4014372
浏览 216回答 2
2回答

千万里不及你

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

狐的传说

int64(或uint64) 仍可用于表示带有美分分数的货币金额。例如,如果你想操作的最低金额为0.01美分,那么你可以代表1占为100,然后半美分将是50和1/100有半分会1。这种表示非常有效(从性能和内存使用的角度来看),但不是很灵活。需要注意的事项有:~2^64/100您可以使用此方法表示最大值(美分)如果最大精度发生变化,则需要对应用程序及其存储的数据进行更改所有算术运算都需要仔细实施,同时考虑四舍五入
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go