2017-08-28 214 views
3

當我執行PHP POW函數返回NAN

echo pow(-0.3741569180353 , 0.2) ; 

我得到的結果NAN

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

解決這個問題的方法是什麼,因爲我有很多這樣的計算?

+3

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

回答

1

經過與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'(因爲'**'優先於'-'),然後應用'-'一元運算符 –

0

給定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