计算两个十进制数之间的百分比增长

时间:2011-09-06 15:32:47

标签: php math

我有一些存储在数据库中的十进制数,需要使用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 个答案:

答案 0 :(得分: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 example

答案 1 :(得分:8)

只需写下

$count = number_format($count2, 2);

而不是

$count = number_format($count2, 0);

保持代码的其余部分不变。