Когда я выполню
echo pow( -0.3741569180353 , 0.2 ) ;
Я получаю результат NAN
Находясь в Excel и калькуляторе, я получаю ответ -0,8215.
Какое решение это исправить, так как у меня много таких расчетов?
После некоторой консультации с экспертами в комнате № 11, pow()
не будет работать с корнем отрицательного числа.
Если ответ будет 0.8215
или же -0.8215
?
Причудливо, используя **
(power) оператор будет работать с корнем отрицательного числа
echo -0.3741569180353 ** 0.2 ;
так как **
имеет более высокий приоритет, чем -
так эффективно то, что вы делаете
echo -(0.3741569180353 ** 0.2) ;
Дано a
Отрицательное число, его степени целочисленных показателей определяются следующим образом:
a
0
является 0
— обычно считается положительным;a
1
является a
— отрицательный;a
2
является a*a
— положительный;a
n
отрицательно для нечетных значений n
и положительно для четных значений n
,Возведение в степень отрицательного основания нецелому показателю не определено в действительных числах.
(Это, однако, определено в комплексных числах.)
pow()
функция правильная. Возвращается NaN
потому что результат не является действительным числом.
Поведение даже указано в Примеры раздел документации:
echo pow(-1, 5.5); // PHP >=5.2.2: NAN