生成两个数字之间的变化百分比——相对于较小的数字

Generate percentage of change between two numbers -- relative to the lesser number

我有一个函数,returns 比较当前值与先前值的增长百分比。该函数唯一做的就是将本周的注册用户数与前一周的注册用户数进行比较。在这两个值中,您必须 return 增长或下降的百分比。

/**
 * Generate percentage change between two numbers.
 *
 * @param float|int $original
 * @param float|int $current
 * @param int $precision
 * @return string
 */
function parsePercent($original, $current, int $precision = 2): string
{
    $result = (($current - $original) / $original) * 100;

    return round($result, $precision);
}

在新值大于原始值的两个数字之间进行计算时,百分比 return 正确。

echo parsePercent(10, 20); // 100%
echo parsePercent(10, 30); // 200%
echo parsePercent(13, 16); // 23.08%
echo parsePercent(11, 22); // 100%

当当前值小于原始值时出现问题。

parsePercent(20, 10); // -50

此时,函数应该 return -100 但它 returns -50。有谁知道如何解决这个问题? 谢谢!

取两个输入中较小的除数:

代码:(Demo)

function parsePercent($original, $current, int $precision = 2): string
{
    return round(
        ($current - $original) / min($original, $current) * 100,
        $precision
    );
}

echo "\n" . parsePercent(10, 20);  // 100%
echo "\n" . parsePercent(10, 30);  // 200%
echo "\n" . parsePercent(13, 16);  // 23.08%
echo "\n" . parsePercent(11, 22);  // 100%
echo "\n" . parsePercent(20, 10);  // -100%