如何在PHP中计算值范围内的百分比

时间:2012-11-18 07:00:07

标签: php algorithm math formula percentage

我有一个值,我需要转换为给定一组规则的百分比。

VALUE=X

其中X可以是从0开始的任何东西

如果:

X > 200

我的功能结果应为100(百分比)。

如果:

X < 200 AND >= 100

结果应该在100到50(百分比)之间。 示例:X = 150将是75%

如果:

X < 100 AND >= 80

结果应在50到25之间(百分比)。 示例:X = 90将为37.5%

如果:

X < 80

结果应介于25和0(百分比)之间。

我在PHP中的方法类似于

if($value > 200) return 100;
if($value > 100 && $value < 200) return ???;

......等等。

其中???显然代表我不知道如何设置的公式。

有没有办法在一个公式中执行此操作? 即使不是 - 这个问题的数学方法是什么?

我知道这是非常基本的,但似乎我在小学跳过了太多的数学课。

2 个答案:

答案 0 :(得分:5)

可以分段定义函数:

enter image description here

图形上,这用四条不同梯度的直线表示。虽然没有办法在没有单独部分的情况下表示这个功能,但实现上述功能非常容易。

在PHP中,此函数可写为:

function f($x) {
    if ($x >= 200)
        return 100;
    if ($x >= 100 && $x < 200)
        return 50 + 50 * (($x - 100) / 100);
    if ($x >= 80 && $x < 100)
        return 25 + 25 * (($x - 80) / 20);
    if ($x < 80)
        return 25 * ($x / 80);
}

答案 1 :(得分:1)

首先,确定你应该在哪个范围内。然后:

  • 减去范围的底部。
  • 除以范围的长度。
  • 乘以范围内的点数差异。
  • 添加范围底部的点数。

因此X从100到200得分从100到50.范围的底部是100;范围的大小是100(200 - 100),得分从最初的100开始到最后的50,所以差异是-50。因此-50 * ($value - 100) / 100 + 100可以使用或简化-0.5 * ($value - 100) + 100150 - $value * 0.5

另一个例子,从80到100:范围的底部是80,范围的大小是20,分数从25到50(差异:-25)。得到-25 * ($value - 80) / 20 + 25,简化为-1.25 * ($value - 80) + 25125 - $value * 1.25