Php, вычисление степени с помощью знака вставки (^) не выполняется

Wolfram Alpha говорит, что даст правильный результат для следующей формулы:

((0.0004954*($current^2))-((0.935*$current)+378.486))-
((0.0004954*($desired^2))-((0.935*$desired)+378.486));

Но когда я запускаю его в PHP, он не дает правильного ответа, почему бы и нет?

$current = mysql_escape_string($_POST['current']);
$desired = mysql_escape_string($_POST['desired']);
$username = mysql_escape_string($_POST['username']);
$password = mysql_escape_string($_POST['password']);
$email = mysql_escape_string($_POST['email']);
$ip = $_SERVER["REMOTE_ADDR"];
$time = time();
$elo = $desired - $current;
if($current < 1200) {
  $price = ($elo/100)*30;
} elseif($current < 1400) {
  $price = ($elo/100)*35;
} elseif($current < 1901) {
  $price = ((0.0004954*($current^2))-((0.935*$current)+378.486))-((0.0004954*($desired^2))-((0.935*$desired)+378.486));
}

person Jerry Xiong    schedule 17.01.2013    source источник


Ответы (3)


Оператор ^ является побитовым оператором.

Вам нужно использовать pow.

Если вы просто хотите возвести значение в квадрат, вы можете просто умножить его само на себя, $current * $current.

person Supericy    schedule 17.01.2013

Вам нужно использовать функцию pow($number, $exponent).

В PHP ^ не означает показатель степени.

$price = ((0.0004954*(pow($current, 2)))-((0.935*$current)+378.486))-((0.0004954* (pow($desired, 2)))-((0.935*$desired)+378.486));

person ixchi    schedule 17.01.2013

^ — побитовый оператор XOR

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

person Martin    schedule 03.10.2017