小数点后两位的除法不起作用

Division with two decimal places not working

我正在尝试除以 193251715/659669075 并得到 29.30% 的结果(所以要将它四舍五入到最接近的带有两位小数的值)

这是我所做的:

new BigDecimal(193251715).divide(new BigDecimal(659669075) , 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100))

但我已经 29 岁了。

我做错了什么?

那是因为您乘以 100 以显示百分比。你应该用 4 的比例除以而不是 2,然后将比例设置为 2:

new BigDecimal(193251715).divide(new BigDecimal(659669075), 4, RoundingMode.HALF_UP)
                         .multiply(new BigDecimal(100))
                         .setScale(2)

设置 scale of 4,以包含更多小数位。

最后将比例设置为 2,使其成为 29.30 而不是 29.30000。

public static void main(String[] args) throws ParseException {
        BigDecimal bg = new BigDecimal(193251715)
                .divide(new BigDecimal(659669075), 4, RoundingMode.HALF_UP)
                .multiply(new BigDecimal(100)).setScale(2);
        System.out.println(bg);
    }