You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Joda.Money转便士:哪种转换方法正确?有无Joda库方法?

把Joda.Money转换为便士的正确方法

直接用Money.getAmountMinorInt()就对了,这是Joda Money官方提供的、专门用来获取最小货币单位数值的方法,完全匹配你的需求:

  • 对于USD 233.33,调用这个方法会直接返回23333,正好是便士的数量
  • 这个方法的设计就是为了避免手动计算的精度问题,Joda Money内部已经用精确逻辑维护了货币主单位和最小单位的对应关系

至于你提到的第二种方法(把getAmount()乘以100),虽然看起来能得到结果,但存在潜在风险:

  • 如果遇到小数位数不是2位的货币(比如日元无小数位),手动乘100会直接出错
  • 手动进行Decimal运算可能因精度丢失产生误差,而库方法已经帮你处理了所有货币的单位转换边界情况

另外如果你的金额可能很大、超出Int范围,可以用getAmountMinorLong(),返回Long类型的最小单位数值,避免溢出问题。

内容的提问来源于stack exchange,提问作者Remo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:16:00