Java 小数点后两位的除法无效

Java 小数点后两位的除法无效,java,bigdecimal,Java,Bigdecimal,我试图除以193251715/659669075,得到29.30%的结果(因此,用两个小数点将其四舍五入到最接近的值) 以下是我所做的: new BigDecimal(193251715).divide(new BigDecimal(659669075) , 2, RoundingMode.HALF_UP).multiply(new BigDecimal(100)) 但我已经29岁了 我做错了什么?那是因为你要乘以100来表示一个百分比。您应该使用4的刻度(而不是2)进行除法,然后将刻度设置为

我试图除以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)

比例设置为4
,以包含更多的小数空间

最后将刻度设置为2,使其由29.30000改为29.30

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);
    }

或者从
100
开始:
新的BigDecimal(100)。乘法(新的BigDecimal(193251715))。除法(新的BigDecimal(659669075),2,取整模式。向上减半)