php pow函数返回NAN

php pow函数返回NAN,php,nan,pow,Php,Nan,Pow,当我执行 echo pow( -0.3741569180353 , 0.2 ) ; 我得到结果NAN 在excel和计算器中,我得到的答案是-0.8215 由于我有很多这样的计算,解决这个问题的方法是什么?在与11号房间的专家协商后,pow()将无法处理负数的根。 答案应该是0.8215还是-0.8215 奇怪的是,使用**(幂)运算符将处理负数的根 echo -0.3741569180353 ** 0.2 ; 因为**的优先级高于-,所以实际上您所做的是 echo -(0.37415691

当我执行

echo pow( -0.3741569180353 , 0.2 ) ;
我得到结果
NAN

在excel和计算器中,我得到的答案是-0.8215


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

在与11号房间的专家协商后,
pow()
将无法处理负数的根。 答案应该是
0.8215
还是
-0.8215

奇怪的是,使用
**
(幂)运算符将处理负数的根

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
    的偶数值为正值
负基到非整数指数的幂运算是。
(但是,它是用复数定义的。)

功能正确。它返回
NaN
,因为结果不是实数

该行为甚至在文件的一节中有详细说明:


使用
echo-0.3741569180353**0.2=5.6.0的代码>但是当我赋值给变量时,同样的问题是
$v1=-0.3741569180353$v2=0.2;echo$v1**$v2
$v1=-0.3741569180353$v2=0.2;echo$v1**$v2;结果:NAN回波-(绝对值($v1)**$v2)结果:-0.82150603063756`
v1=-0.3741569180353$v2=0.2;echo$v1**$v2
$v1
是一个负数。。。。因此,这项行动产生了复杂的结果<代码>回波-0.3741569180353**0.2
首先计算
0.3741569180353**0.2
(因为
**
优先于
-
),然后应用
-
一元运算符,但如果您有大量此类计算,我建议您使用能够处理复数的库
echo pow(-1, 5.5); // PHP >=5.2.2: NAN