Я вижу, что это очень старый вопрос, но именно так я вычисляю процентную разницу между двумя числами:
(1 - (oldNumber / newNumber)) * 100
Итак, процентная разница от 30 до 40:
(1 - (30/40)) * 100 = +25% (meaning, increase by 25%)
Разница в процентах от 40 до 30:
(1 - (40/30)) * 100 = -33.33% (meaning, decrease by 33%)
В php я использую такую функцию:
function calculatePercentage($oldFigure, $newFigure) {
if (($oldFigure != 0) && ($newFigure != 0)) {
$percentChange = (1 - $oldFigure / $newFigure) * 100;
}
else {
$percentChange = null;
}
return $percentChange;
}