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,这显然不是你想要的。