计算两个数字之间的百分比变化

4

希望能够解释一下以下代码,该代码用于计算两个不同数字之间的百分比变化,其中原始数字可能是较大或较小的数字。所以这段代码是否适用于显示增加+或减少-的变化?谢谢。

$original= 100;
$current = 95;

$percentChange = (1 - $original / $current ) * 100;

1
你尝试过什么?只需输入一个更大的数字,你就会看到。 - Martijn
1
这不是数学问题,而是编程问题吗? - Eugene Sh.
我能够使用在线的PHP沙盒,它看起来很好,谢谢。 - Anton S
3个回答

8

这个函数更有用,因为它可以防止除以零,并且输出结果可以四舍五入,同时它还能处理正(增加)和负(减少)的返回值。

if (! function_exists('pct_change')) {
    /**
     * Generate percentage change between two numbers.
     *
     * @param int|float $old
     * @param int|float $new
     * @param int $precision
     * @return float
     */
    function pct_change($old, $new, int $precision = 2): float
    {
        if ($old == 0) {
            $old++;
            $new++;
        }

        $change = (($new - $old) / $old) * 100;

        return round($change, $precision);
    }
}

7
找出差异,然后像这样计算百分比。
<?php
    $original= 100;
    $current = 115;
    $diff = $current - $original;
    $more_less = $diff > 0 ? "More" : "Less";
    $diff = abs($diff);
    $percentChange = ($diff/$original)*100;
    echo "$percentChange% $more_less agaist $original";
?>

11090100相比差异将是相同的。

演示链接:https://eval.in/872926


1
谢谢,伙计。我喜欢更/少的开关,我会用+/-来控制它。 - Anton S
1
我知道这已经过时了,但无论如何我还是想感谢你。最初我使用的是问题陈述中的公式,因为许多网站都推荐它,但那个解决方案是有缺陷的。如果有一个-100%的变化,除以0将始终返回未定义,因此它不会告诉您一个-100%的变化。这篇文章中的解决方案才是正确的方法。 - Bruce

0

是的,它可以显示增加+或减少-的变化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接