金额费率不同的计算方式结果相差0.01

第一种方式:

BigDecimal netMoney = BigDecimalUtil.multiply(
        realMoney,
        BigDecimalUtil.subtract(BigDecimal.ONE, totalRate)
).setScale(2, BigDecimal.ROUND_HALF_UP);

假如realMoney=15, totalRate=0.005

15 *(1-0.005) = 15 * 0.995 = 14.925 约等于 14.93

第二种方式

BigDecimal netMoney = BigDecimalUtil.subtract(realMoney,
        BigDecimalUtil.multiply(realMoney, totalRate)
                .setScale(2, BigDecimal.ROUND_HALF_UP));

15-15*0.005 = 15-0.08=14.92

 

第一种方式  和 第二种方式 相差0.01

第一种方式是金额 乘 费率  最后四舍五入

第二种方式是金额 减去 手续费四舍五入后的值

 

发表评论

邮箱地址不会被公开。