Java BigDecimal进行除法和乘法运算,并四舍五入到2位小数



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

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

其中

BigDecimal totalCase=BigDecimal。零;BigDecimal totalPrep=BigDecimal。零;

我必须用totalPrep除以totalCase,结果乘以100得到以%为单位的结果值。66.666666666666

假设总准备是二次小数2,总基数是3,那么数学结果是66.666666666666。我想把它连到小数点后2位66.67%

有什么建议吗?

如果您希望2 / 3产生66.67,您需要先相乘,然后除法并四舍五入到小数点后两位:

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

最新更新