Расчет отрицательного и положительного процента - PullRequest
5 голосов
/ 09 декабря 2010

Допустим, у меня есть 3 набора чисел, и я хочу% от их разности.

30 - 60
94 - 67
10 - 14

Мне нужна функция, которая вычисляет процент от разницы между каждыми 2 числами, и самое важное - поддерживать положительные и отрицательные проценты.

Пример:

30 - 60 : +100%
94 - 67 : -36% ( just guessing )
10 - 14 : +40%

Спасибо

Ответы [ 7 ]

17 голосов
/ 09 декабря 2010

Это довольно базовая математика.

% разницы от х к у 100*(y-x)/x

6 голосов
/ 09 декабря 2010

Важным вопросом здесь является то, является ли одно из ваших чисел известной ссылкой , например, теоретическим значением.

Если не указан ссылочный номер, используйте процентную разницу как

100*(y-x)/((x+y)/2)

Важным отличием здесь является деление на среднее значение, которое симметрирует определение.

Однако из вашего примера может показаться, что вы можете захотеть процент ошибки , то есть вы думаете о своем первом номере как о ссылочном номере и хотите знать, как другой отклоняется от этого.Тогда уравнение, где x является ссылочным номером:

100*(y-x)/x

См., Например, wikipedia , для небольшого обсуждения этого вопроса.

4 голосов
/ 09 декабря 2010

для x - y процент (y-x)/x*100

3 голосов
/ 09 декабря 2010

Простая математика:

function differenceAsPercent($number1, $number2) {
    return number_format(($number2 - $number1) / $number1 * 100, 2);
}

    echo differenceAsPercent(30, 60); // 100
    echo differenceAsPercent(94, 67); // -28.72
    echo differenceAsPercent(10, 14); // 40
0 голосов
/ 03 августа 2018

Я думаю, что следующий код PHP будет лучше математики.

if ($oldValue !== null && $oldValue !== 0) {
  $percentChange = number_format(($newValue - $oldValue) / $oldValue * 100, 2);
} else if ($oldValue !== null && $oldValue !== 0) {
  $percentChange = number_format(($newValue - $oldValue) / $oldValue * 100, 2);
}else {
  $percentChange = 0;
}
0 голосов
/ 07 января 2013

Если для системы голосования нужен процент, то единственно правильно ответил Андрей Королев.

Пример

10 голосов за 1 голос против = 90%10 голосов за 5 голосов против = 50%10 голосов за 3 голоса против = 70%100 голосов за 1 голос против = 99%1000 голосов за 1 голос против = 99,9%

1 голос за 10 голосов против = -90%5 голосов за 10 голосов против = -50%3 голоса за 10 голосов против = -70%1 голос за 100 голосов против = -99%1 голос за 1000 голосов против = -99,9%

function perc(a,b){
console.log( (a > b) ? (a-b)/a*100 : (b - a)/b*-100);

}

0 голосов
/ 09 декабря 2010
$c = ($a > $b) ? ($a-$b)/$a*-100 : ($b-$a)/$b*100;  

В Украине дети учатся этим математическим расчетам в возрасте 12 лет :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...