#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)
.