java bigdecimal乘除并舍入到2位小数

r1zk6ea1  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(336)

我有一个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
假设总备考数为2,总考数为3,那么数学成绩为66.66666666667。我想把这个压缩到小数点后两位66.67%
有什么建议吗?

u1ehiz5o

u1ehiz5o1#

如果你愿意的话 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 ,这显然不是你想要的。

相关问题