小于1且大于0的值的计算百分比

Abi*_*Abi 3 java

我试图使用BigDecimal显示百分比.

例如,如果我必须这样做

    double val = (9522 / total ) * 100;

    System.out.println("Val is :" + val);
Run Code Online (Sandbox Code Playgroud)

总计120000.

我想将计算显示为百分比,但由于计算结果为小于0的值,我无法显示百分比

我也试过了

    BigDecimal decimal = new BigDecimal((9522 * 100 ) / total);
    BigDecimal roundValue = decimal.setScale(2, BigDecimal.ROUND_HALF_UP);
    System.out.println("decimal: " + decimal);
    System.out.println("roundValue: " + roundValue);
Run Code Online (Sandbox Code Playgroud)

但结果相同.

即使是小数,我怎么能显示百分比?

jjn*_*guy 8

问题是你正在进行整数除法.

如果需要小数结果,则需要进行浮点除法.

double val = (9522 / (double) total) * 100;
Run Code Online (Sandbox Code Playgroud)

将一个操作数强制转换为double将导致Java执行正确的除法类型,而不是默认为整数除法.