[英]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.21
或78.01
类的东西
您的错误是在乘以100之前先进行四舍五入。相反,您可以先乘以100,然后在乘以后以2的精度进行除法,如下所示:
return (save.multiply(new BigDecimal(100)).divide(totalCostBeforeSale, 2, RoundingMode.DOWN));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.