这是场景。
我正在编写应用折扣的代码,但遇到了各种各样的麻烦。
让我们假设我的订单有以下内容,作为销售代表,我决定为该订单给客户 23.47 英镑的折扣。
我有 3 个订单项,其中两个花费 150.00 英镑,一个花费 10.00 英镑。订单总价值为 310.00 英镑
因此,我需要计算每个订单项的 %discount(因为外部接口无法处理订单级别的折扣,而只能处理订单项折扣)。此外,外部接口只能处理 Discount% 字段中的一位小数。
逻辑:
- 我计算订单的总额(折扣前)。价格为 310.00 英镑。
- 我计算出折扣金额占总订单价值的百分比,即 23.47 英镑 / 310.00 英镑
折扣百分比为 7.570967741935484%。但是,这需要四舍五入到 7.6%。如果我这样做了,那么每个行项目的折扣金额会更高。每个行项目的折扣金额较高。我最终给予的总折扣是 23.56 英镑,比我打算给予的 23.47 英镑多 0.08 英镑。
每个订单项应获得 11.36 英镑、11.36 英镑和 0.76 英镑的折扣,但我最终给出 11.40 英镑、11.40 英镑和 0.76 英镑的折扣。
我需要的是计算出我在四舍五入中为每个行项目获得的“错误”,并补偿可以应用的最低价格项目中的错误,以便折扣价格尽可能接近我打算给(但是,它应该向上取整,从不向下取整)。
在对每个订单项应用折扣时,我是否必须“记住”需要应用的剩余折扣金额?
伪代码如下。
iterating through each line item
//first line item where I have given more discount than intended. 4p more. So, the remaining discount is not £12.11 but actually £12.07
//Calculate the discount% for remaining line items, i.e.,
//And, I am confused :-)
这样做的最佳方法是什么?
PS:不确定是否需要在这里。但是,如果不适用于 SE 网站,请随时指出我正确的方向或将其删除。