PHP POW函数返回NAN

问题描述:

当我执行PHP POW函数返回NAN

echo pow(-0.3741569180353 , 0.2) ; 

我得到的结果NAN

虽然在Excel和计算器,我得到了答案-0.8215。

解决这个问题的方法是什么,因为我有很多这样的计算?

+3

使用'回波-0.3741569180353 ** 0.2;'与PHP> = 5.6.0 –

经过与11号会议室专家的咨询后,pow()将不适用于负数的根。 答案应该是0.8215-0.8215

离奇,使用**(功率)运营商将与负数的根工作

echo -0.3741569180353 ** 0.2 ; 

因为**-更高的优先级,因此有效地你在做什么是

echo -(0.3741569180353 ** 0.2) ; 
+0

但是,当我分配到一个变量,同样的问题 '$ v1 = -0.3741569180353; $ v2 = 0.2; echo $ v1 ** $ v2;' –

+0

'$ v1 = -0.3741569180353; $ v2 = 0.2; echo $ v1 ** $ v2; (abs($ v1)** $ v2);' 结果:-0.82150603063756' –

+1

'$ v1 = -0.3741569180353; $ v2 = 0。2; echo $ v1 ** $ v2;''v1'是一个负数......因此操作的复杂结果,所以NaN。 'echo -0.3741569180353 ** 0.2;'首先计算'0.3741569180353 ** 0.2'(因为'**'优先于'-'),然后应用'-'一元运算符 –

给定a为负数,其对整数指数的功率定义如下:

  • a00 - 通常视为正面;
  • a1 is a - negative;
  • a2a*a - positive;
  • an为负的n奇数值和阳性的n偶数值。

负基指数到非整数指数的指数为not defined in real numbers
(但是,以复数定义)

pow()函数是正确的。它返回NaN,因为结果不是实数。

行为甚至在文档的Examples部分中指定:

echo pow(-1, 5.5); // PHP >=5.2.2: NAN