我相信这个问题的答案很简单,但我无法决定必须做什么。所以这就是问题:假设我们遵循使用
例如:假设我必须将"用户金额"分配给投资于"n"个不同实体。现在考虑用户提交100美元用于投资,并分为3个债券的情况。等效的代码如下:
BigDecimal
进行财务计算的"最佳实践",如何处理会抛出异常的计算?例如:假设我必须将"用户金额"分配给投资于"n"个不同实体。现在考虑用户提交100美元用于投资,并分为3个债券的情况。等效的代码如下:
public static void main(String[] args) throws Exception {
BigDecimal bd1 = new BigDecimal("100.0");
BigDecimal bd2 = new BigDecimal("3");
System.out.println(bd1.divide(bd2));
}
但是我们都知道,这段代码会抛出一个 ArithmeticException
异常,因为除法是非终止的。当使用无限精度数据类型进行计算时,如何处理这种情况呢?
谢谢,
sasuke
更新:鉴于 RoundingMode
可以帮助解决此问题,下一个问题是,为什么100.0/3不是33.33而是33.3? 33.33 不应该是“更”准确的答案吗?你期望得到33美分而不是30美分。是否有任何方法可以调整这个结果?
bd1.divide(bd2, 2, RoundingMode.HALF_EVEN)
(如下所示),结果为33.33。 - krock