在某些情况下,BigDecimal是否过度杀伤?

Mic*_*ael 13 java floating-point bigdecimal

我正在处理钱,所以我需要我的结果准确但我只需要2位小数(美分)的精度.BigDecimal是否需要保证乘法/除法的结果是准确的?

Pat*_*han 17

BigDecimal是十进制小数运算的一种非常合适的类型,小数点后面有一个已知的位数.您可以使用整数类型并自己跟踪乘数,但这涉及到可以自动执行的代码工作.

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

我会考虑避免它,只要你需要存储大量的金钱,并且缺乏记忆.


Joh*_*nyO 8

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

同样,有一个JODA Money库可以为您提供功能更全面的API计算.

  • 但是他想进行除法计算,这对于使用金钱的整数来说并不好 (5认同)