Golang:我如何将float64货币表示转换为最低面额?(乘以100不适用于所有货币)

Ken*_*Ken 0 floating-point currency decimal type-conversion go

我正在处理浮动64的货币表示.例如,2.9美元代表2.90美元,所以如果我需要将其转换为货币的最低面额,我只需乘以100(2.9*100 = 290美分).

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

除了特殊套管之外,对于某些货币乘以100时,最好的办法是什么?

编辑:我有两条信息是浮动表示和ISO货币代码.

pet*_*rSO 7

不要使用浮点数来赚钱.浮点数是近似值.float64(所有IEEE-754 64位浮点数的集合)符合IEEE浮点运算标准(IEEE 754).

维基百科:IEEE 754


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

维基百科:ISO 4217

当前货币和资金代码列表