Java BigDecimal 除法乘法四舍五入到2位小数

Java BigDecimal divide and multiply and round to 2 decimals

我有一个 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

假设total prep为十进制2,toalCase为3,则数学结果为66.66666666666666666666666666666666666667。我想将其连接到小数点后两位 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,显然不是你想要的