大多数时候,我认为建议将金钱作为最基本的单位;并使用64位无符号整数来提供最大容量。
从表面上看,这似乎没什么问题,但是我想要拆分1美分呢?
在Java / Scala中,BigDecimal类型,我也看到建议用于处理金钱,将跟踪分数,0.01 / 2 = 0.005
但除以64位无符号整数,1/2 = 0
我试图写一些处理钱的Go,想知道要使用哪种类型(只需使用uint64或者找其他的东西?)。
谢谢!
答案 0 :(得分:3)
您可以将big.Rat
用于任意大小的有理数。然后,您可以将数量分配到心脏的内容,而不会失去任何精确度。
答案 1 :(得分:3)
int64
(或uint64
)仍可用于表示分数的货币金额。例如。如果您想要使用的最低金额为0.01
美分,那么您可以将1
分为100
,那么半分为50
和{{1}一分钱将1/100
。这种表示非常有效(从性能和内存使用的角度来看),但不是很灵活。需要注意的是:
1
美分