订单拆分子订单,子订单金额相加不等于父订单金额
商品*3(购买数量)=1块钱,拆分成三个订单
那么每个商品对应的订单金额就是0.33(程序四舍五入)
我现在把三个订单的金额加起来=0.99,这就少了0.01
我现在是和钱包一起用的,有可能出现这种情况
3个商品3块钱,我用了2块钱包
回答
你需要一个求平均数的函数,因为 10/3 除法不尽的,我处理为最后一个数用来做微调
父订单的价格,不是由 子订单 计算得到的吗?
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