Математическая функция PHP возвращает неверный результат

#php #math

#php #математика

Вопрос:

У меня есть переменная, содержащая:

 40 * ($plvl^2))   (360 * $plvl);
  

Где $plvl равно 2. Согласно wolfram и Google, правильный результат должен быть 880, но функция PHP возвращает 720.

Кто-нибудь знает, почему они возвращают разные значения и как мне исправить это, чтобы получить результат 880?

Комментарии:

1. Я постоянно забываю, что ^ это не делает то, что я думаю, что это делает в PHP.

Ответ №1:

 $plvl^2
  

просто инвертирует второй младший бит plvl ( ^ это побитовый XOR). Вы хотите pow :

 40 * pow($plvl, 2)   360 * $plvl;
  

Ответ №2:

^ Оператор не является возведением в степень, это побитовый оператор исключающего ИЛИ (XOR). Вместо $plvl^2 , используйте pow($plvl, 2)

Ответ №3:

^ это XOR, а не возведение в степень. 2^ 2 равно нулю.

Ответ №4:

Просто :

 $plvl = 2;

echo 40*$plvl*$plvl 360*$plvl; //880
  

На самом деле круглые скобки не нужны.

Ответ №5:

Использование

 40 * pow($plvl,2)   (360 * $plvl);
  

тогда это работает. Возможно, оператор ^ не является допустимым оператором php.

Ответ №6:

В дополнение к другим ответам: обычно простое умножение намного эффективнее, чем использование pow . Поэтому, возможно, вам следует использовать $plvl * $plvl вместо pow($plvl,2) .