0

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

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 ???;

... 等等。

在哪里???显然代表我不知道如何设置的公式。

有没有办法在一个公式中做到这一点?即使不是 - 这个问题的数学方法是什么?

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

4

2 回答 2

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);
}
于 2012-11-18T07:09:21.913 回答
1

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

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

所以从 100 到 200 的 X 给出了从 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) + 25125 - $value * 1.25

于 2012-11-18T07:20:26.653 回答