订单拆分子订单,子订单金额相加不等于父订单金额

商品*3(购买数量)=1块钱,拆分成三个订单
那么每个商品对应的订单金额就是0.33(程序四舍五入)
我现在把三个订单的金额加起来=0.99,这就少了0.01

我现在是和钱包一起用的,有可能出现这种情况
3个商品3块钱,我用了2块钱包

回答

你需要一个求平均数的函数,因为 10/3 除法不尽的,我处理为最后一个数用来做微调
image

父订单的价格,不是由 子订单 计算得到的吗?

3个商品 = 1 块钱, 从业务上说,用户必须购买 3 个商品才能支付吧。 也就是,这 3 个商品,算是一个子订单。 而子订单的单价是 1 元,我觉得,有点奇怪,为什么会被拆成 3 个子订单。

根据一楼拿最后一个做微调

public static void main(String[] args)

{

BigDecimal walletPay = BigDecimal.valueOf(2);

BigDecimal walletAvg = walletPay.divide(BigDecimal.valueOf(3), 2, BigDecimal.ROUND_HALF_UP);

BigDecimal walletAvgSum = walletAvg.multiply(BigDecimal.valueOf(3));

if(walletPay.compareTo(walletAvgSum) > 0)

{

System.out.println("最后一个加" + walletPay.subtract(walletAvgSum));

}

else if(walletPay.compareTo(walletAvgSum) < 0)

{

System.out.println("最后一个减" + walletPay.subtract(walletAvgSum).abs());

}

}

1.一般数据库存的会比显示的小数位数多1-2位
2.第三个人的金额不是除出来的,是减出来的1-1/3-1/3

以上是 订单拆分子订单,子订单金额相加不等于父订单金额 的全部内容, 来源链接: utcz.com/a/39963.html

回到顶部