JavaBigDecimal除法和乘法并四舍五入为2位小数

我有一个 Java BigDecimal 表达式,如下所示:

(totalPrep.divide(totalCase, 2, BigDecimal.ROUND_HALF_UP)).multiply(new BigDecimal(100))

在哪里

BigDecimal totalCase = BigDecimal.ZERO; BigDecimal totalPrep = BigDecimal.ZERO;

我必须将 totalPrep 与 totalCase 相除,结果乘以 100 以获得以 % 为单位的结果值。66.6666666666666666666666666666666666667

假设总 prep 是二进制 2,toalCase 是 3,那么数学结果为 66.6666666666666666666666666666666666667。我想将此连接到小数点后两位 66.67%

有什么建议?

回答

如果你想2 / 3造成66.67,你需要先乘,然后分而轮为2位小数:

BigDecimal totalPrep = BigDecimal.valueOf(2);
BigDecimal totalCase = BigDecimal.valueOf(3);

BigDecimal result = totalPrep.multiply(BigDecimal.valueOf(100))
                             .divide(totalCase, 2, RoundingMode.HALF_UP);

System.out.println(result); // prints: 66.67

这将计算2 * 100 = 200,然后200 / 3 = 66.67(四舍五入)

当你先除法时,你计算2 / 3 = 0.67(四舍五入),然后0.67 * 100 = 67.00,这显然不是你想要的。


以上是JavaBigDecimal除法和乘法并四舍五入为2位小数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>