我正面临一个新问题。.我使用BigDecimal进行资金投入。 有一个小问题。让我们看一下这段代码:
BigDecimal a = BigDecimal.valueOf(5);
BigDecimal b = BigDecimal.valueOf(3);
BigDecimal result = a.divide(b);
结果是:
1.67
但如果我这样做:
1.67 * 3 = 5.01
这就是我的代码中的问题。所以我需要精确得到5。所以5/3应该是1.67 + 1.67 + 1.66。 有可能实现吗?
答案 0 :(得分:3)
如果执行该代码段,则会出现以下异常,如live code at IdeOne.com所示。
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result
看看另一个线程:
ArithmeticException thrown during BigDecimal.divide
您可以告诉BigDecimal如何处理重复的小数。
如果您改为执行以下操作:
BigDecimal a = BigDecimal.valueOf(500, 2);
BigDecimal b = BigDecimal.valueOf(300, 2);
BigDecimal result = a.divide(b, BigDecimal.ROUND_HALF_UP);
System.out.println(result);
那么您确实会有1.67
关于如何实现1.67 + 1.67 + 1.66
AFAIK的问题,您需要自己解决。