1

我有一个源值,我需要应用多个百分比,但同时,百分比必须考虑其他百分比。

举个例子:
值 = 100
百分比1 = 10%
百分比2 = 15%
百分比3 = 17%

我需要计算出最终值是多少,但是在添加 Percentage1 时,它必须考虑 Percentage2 和 Percentage3 的值。

我目前管理此问题的唯一方法是使用其他百分比的最后一个值递归计算该值,直到没有更多变化,但我什至不确定这是否正确。

有没有更聪明的计算方法?

编辑:这基本上是为了计算多重费用。因此,假设您在 eBay 上发布了一个列表,并且您在 eBay 上列出了 10% 的费用,而买家通过贝宝购买了商品,并且您为贝宝交易支付了 15% 的费用,然后您又被收取了 17% 的费用,原因是运输,我们正在尝试计算最终费用是多少,然后相应地调整价值。

这是我正在使用的代码:

    Dim Value As Decimal = 100
    Dim Fee1Percent As Decimal = 0.1
    Dim Fee2Percent As Decimal = 0.15
    Dim Fee3Percent As Decimal = 0.17

    Dim PreviousFee1 As Decimal
    Dim PreviousFee2 As Decimal
    Dim PreviousFee3 As Decimal

    Dim Fee1 As Decimal
    Dim Fee2 As Decimal
    Dim Fee3 As Decimal

    Do
        PreviousFee1 = Fee1
        PreviousFee2 = Fee2
        PreviousFee3 = Fee3

        Fee1 = Math.Round((Value + PreviousFee2 + PreviousFee3) * Fee1Percent, 4, MidpointRounding.AwayFromZero)
        Fee2 = Math.Round((Value + PreviousFee1 + PreviousFee3) * Fee2Percent, 4, MidpointRounding.AwayFromZero)
        Fee3 = Math.Round((Value + PreviousFee1 + PreviousFee2) * Fee3Percent, 4, MidpointRounding.AwayFromZero)

    Loop Until PreviousFee1 = Fee1 AndAlso PreviousFee2 = Fee2 AndAlso PreviousFee3 = Fee3

这是我的递归列表,所以你从初始值 100 开始,然后使用之前其他费用的值,直到没有更多变化(四舍五入到小数点后 4 位)

10.0        15.00       17.00
13.200      19.0500     21.2500
14.0300     20.1675     22.4825
14.2650     20.4769     22.8136
14.3291     20.5618     22.9061
14.3468     20.5853     22.9315
14.3517     20.5917     22.9385
14.3530     20.5935     22.9404
14.3534     20.5940     22.9409
14.3535     20.5941     22.9411
14.3535     20.5942     22.9411
14.3535     20.5942     22.9411

所以在这种情况下,我的最终总和是 157.8888

4

2 回答 2

1

有几种方法可以设计这个分数函数:

  • 乘以百分比:0.10 * 0.15 * 0.17*值
  • 百分比的最小值:min(0.10, 0.15, 0.17)* 值 = 0.10* 值
  • 加权百分比(使用权重,0.7加起来为):​​ 值0.10.21.0(0.10 * 0.7 + 0.15 * 0.1 + 0.17 * 0.2)
  • ...

这取决于您要优化的内容

于 2013-01-28T14:13:29.583 回答
0

问题是我的计算方法错误:我必须使用百分比的反向计算来标记基本价格

因此,使用 10%、15% 和 17%,计算如下:100 / (1 - 0.1 - 0.15 - 0.17) = 172.414

证明:
10% - 17.2414
15% - 25.8621
17% - 29.3103
最终总数为 72.414,剩下的正好是 100。

于 2013-01-29T09:09:22.657 回答