营销折扣模块优惠均摊和0.01精度计算规则

优惠均摊计算规则

由于商品的售价不同,优惠金额在分摊到每件商品中时,需要按照商品售价占优惠组的比例进行优惠分摊,这样可以避免买家恶意退单退货,并且也为退款金额做出合理依据。

  • 按商品售价分摊计算公式:商品售价 / 优惠商品组总价 * 优惠力度

  • 案例1:如商品A售价70元,商品B售价30元,商品A和商品B同时参与优惠减10元,则需要将优惠金额按商品销售金额进行均摊,商品A优惠7元,商品B优惠3元

购物车

单价

数量

参与优惠

小计

优惠

优惠后金额

总计(元)

计算公式

商品A

70

1

满100-10元

70

7

63

90

70 / 100 * 10 = 63

商品B

30

1

30

3

27

30 / 100 * 10 = 27

  • 注意:只对有参与该优惠商品进行优惠分摊,若有商品C不属于此优惠,则无需分摊,详见如下案例

  • 案例2:如商品A售价70元,商品B售价30元,商品C售价100元,商品A和商品B同时参与优惠减10元,商品C不参与优惠,则需要将优惠金额按均摊到商品A和商品B,无需均摊到商品C,商品A优惠7元,商品B优惠3元,商品C优惠0元

购物车

单价

数量

参与优惠

小计

优惠

优惠后金额

总计(元)

优惠均摊计算公式

商品A

70

1

满100-10元

70

7

63

190

70 / 100 * 10 = 63

商品B

30

1

30

3

27

30 / 100 * 10 = 27

商品C

100

1

无优惠

100

0

100

不分摊优惠金额

精度计算问题算法

使用以上优惠均摊方案进行计算,可能会造成当一个订单商品过多时,计算每个单个商品优惠价格,四舍五入后,他们之和可能小于或者大于总优惠金额。

  • 如:购买多件商品优惠均摊后,优惠金额≠实际优惠金额,如10元折扣,实际上只扣减了9.9元

  • 案例:商品A、B、C的售价均为10元,优惠券为减10元,按照优惠均摊和四舍五入规则,每个商品优惠3.33元,累加起来则是9.99元,不符合减10元预期

购物车

单价

数量

参与优惠

小计

优惠

优惠后金额

总计

总优惠金额

应优惠金额

优惠计算公式

商品A

10

1

优惠券减10元

10

3.33

6.67

20.01

实际应为20元

9.99

10

10 / 30 * 10 = 3.33(四舍五入)

商品B

10

1

10

3.33

6.67

10 / 30 * 10 = 3.33(四舍五入)

商品C

10

1

10

3.33

6.67

10 / 30 * 10 = 3.33(四舍五入)

  • 解决方案:最后一件商的优惠金额使用总优惠金额减去以优惠金额来计算,公式:总优惠金额 - 商品A...商品N的已分摊优惠金额

购物车

单价

数量

参与优惠

小计

优惠

优惠后金额

总计

总优惠金额

应优惠金额

优惠计算公式

商品A

10

1

优惠券减10元

10

3.33

6.67

20.00

10

10

10 / 30 * 10 = 3.33(四舍五入)

商品B

10

1

10

3.33

6.67

10 / 30 * 10 = 3.33(四舍五入)

商品C

10

1

10

3.34

6.66

10 - 3.33 - 3.33 = 3.34

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值