简体   繁体   English

小数点后不给出结果的大数

[英]Bigdecimal not giving results after decimal points

I have the following method to calculation percentage 我有以下方法来计算百分比

    public static BigDecimal getPercentageSave(BigDecimal totalCostAfterSale, BigDecimal totalCostBeforeSale) {
        BigDecimal save = totalCostBeforeSale.subtract(totalCostAfterSale);
        if (save.compareTo(BigDecimal.ZERO) == 0) {
            return BigDecimal.ZERO;
        }
        return (save.divide(totalCostBeforeSale, 2, RoundingMode.DOWN)).multiply(new BigDecimal(100));
    }

But it only gives me results like xx.00 Eg. 但这只会给我类似xx.00的结果。 56.00, 78.00 56.00,78.00

How can i get the something like 56.21 or 78.01 我怎样才能得到56.2178.01类的东西

您的错误是在乘以100之前先进行四舍五入。相反,您可以先乘以100,然后在乘以后以2的精度进行除法,如下所示:

return (save.multiply(new BigDecimal(100)).divide(totalCostBeforeSale, 2, RoundingMode.DOWN));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM