在某些情况下,BigDecimal是不是有点过分了?

2022-09-04 07:14:00

我正在使用金钱,所以我需要我的结果准确,但我只需要2个小数点(美分)的精度。是否需要 BigDecimal 来保证乘法/除法的结果准确无误?


答案 1

BigDecimal是十进制分数算术的非常合适的类型,小数点后的数字位数已知。您可以使用整数类型并自己跟踪乘数,但这涉及在代码中执行可以自动化的工作。

除了管理小数点后的数字外,BigDecimal还将根据需要扩展存储的数字数 - 许多商业和政府财务计算涉及的总和太大而无法以美分存储在int中。

只有在您需要存储大量资金并且内存不足时,我才会考虑避免使用它。


答案 2

一个常见的选择是用整数或long(美分值)进行所有计算,然后在需要显示时简单地添加两个小数位。

同样,有一个JODA货币库,它将为您提供一个功能更齐全的货币计算API。