我遇到与电子商务购物车相关的问题。在某些情况下(通常涉及特别优惠或代金券),可能会减少整体购物车总数 - 例如10英镑优惠券总价格。要计算此购物车的税务部分,英国税务局的建议之一是将减少量除以购物车中的产品数量,并使用此值计算每种产品的新毛利(含税)价格,您可以从中计算新的净价(不含税)。例如:10英镑的折扣(在2个产品的情况下)每个的总折扣为5英镑。显然,这里的一个问题可能是如果其中一个项目非常便宜,例如2.99英镑,因此不能减少5英镑。
我需要一种计算减少量应该是什么的方法,因此它在产品总数之间均匀分配,但从不使单个项目的成本小于零。救命啊!
FWIW我将用PHP编程
修改
Oswald的例子会在PHP中给我这样的东西:
$prodA = 2.99;
$prodB = 20.00;
$total = ($prodA + $prodB);
$reduction = 5.00;
$newA = ($prodA - (($prodA/$total) * $reduction));
$newB = ($prodB - (($prodB/$total) * $reduction));
似乎加起来..
答案 0 :(得分:2)
如果item
是商品的总价,total
是所有总价格的总和,而reduction
是您要从帐单中减去的金额,那么新的该项目的总价格是
item - item/total * reduction
这显然不会在项目之间平均分配减少量。但是,在项目之间平均分配减少会导致问题(正如您已经注意到的那样)。
而是该方法根据物品的价格按比例分配减少量。例如,如果10美元的项目减少1美元,则20美元的项目将减少2美元,5美元的项目项目将减少0.5美元。
答案 1 :(得分:1)
算法很简单:
例如,如果您有10英镑的折扣和3种产品:A(£2),B(£3)和C(£45),则权重为:
因此新价格将是: