同时应用多个百分比

时间:2013-01-28 13:56:19

标签: math percentage mathematical-optimization simultaneous

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

以例如:
值= 100
百分比1 = 10%
百分比2 = 15%
百分比3 = 17%

我需要确定最终值是什么,但是在添加Percentage1时,它必须考虑Percentage2和Percentage3中的值。

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

有更智能的计算方法吗?

编辑:这基本上是计算多个费用。 所以说你在eBay上贴了一个上市,你在eBay上收取10%的上市费用,买家通过PayPal买了,你付了15%的Paypal交易,然后再收取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

2 个答案:

答案 0 :(得分:1)

您可以通过多种方式设计此分数功能:

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

这取决于您想要优化的内容

答案 1 :(得分: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。