计算两个小数之间的百分增长率

11

我在数据库中存储了一些十进制数,需要使用PHP计算两个数字之间的百分比增长(或减少)。

两个数字的例子是:111.0516和111.9052,这将会是一个增长0.7628%。

我在某处找到了以下代码。不幸的是,它似乎不能处理十进制数并将其四舍五入:

$num_amount = 111.0516;
$num_total = 111.9052;

function percent($num_amount, $num_total) {
$count1 = $num_amount / $num_total;
$count2 = $count1 * 100;
$count = number_format($count2, 0);
echo $count;
}

percent($num_amount, $num_total);

理想情况下,我需要计算百分比到小数点后两位,得出0.77%的答案。

使用PHP是否可以实现?我很困惑。我的PHP和数学技能都不足以解决这个问题。

2个回答

22

让我们做一些数学题。

如果你有4欧元,我给你2欧元,那么你就有6欧元,增加了2/6。

如果你有x欧元,我给你delta欧元,那么你就有x + delta = y欧元。

我们可以写成:

percentage_increase := (delta / y) * 100
                    := ((y - x) / y) * 100
                    := (1 - (x / y)) * 100
所以你的函数变成了:
function percent($num_amount, $num_total) {
    echo number_format((1 - $num_amount / $num_total) * 100, 2); // yields 0.76
}

Codepad示例


如果它是完美的,为什么不将其标记为正确答案?对于我们无法重复您的问题的人来说,将完美标记为完美将非常有帮助! - Laci
这个意思是什么 1 - ( 1 - $num_amount / $num_total )?你能给我原始的公式吗? - Lion King

8

只需要编写

$count = number_format($count2, 2);

代替
$count = number_format($count2, 0);

在保持其余代码不变的同时。


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