我有一个值,我需要转换为给定一组规则的百分比。
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 ???;
......等等。
其中???显然代表我不知道如何设置的公式。
有没有办法在一个公式中执行此操作? 即使不是 - 这个问题的数学方法是什么?
我知道这是非常基本的,但似乎我在小学跳过了太多的数学课。
答案 0 :(得分:5)
可以分段定义函数:
图形上,这用四条不同梯度的直线表示。虽然没有办法在没有单独部分的情况下表示这个功能,但实现上述功能非常容易。
在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) + 100
或150 - $value * 0.5
。
另一个例子,从80到100:范围的底部是80,范围的大小是20,分数从25到50(差异:-25)。得到-25 * ($value - 80) / 20 + 25
,简化为-1.25 * ($value - 80) + 25
或125 - $value * 1.25