許多程式語言使用「^」作為次方運算子,但在 PHP(和其他基於 C 的語言)中,它實際上是 XOR 運算子。您需要使用 `pow` 函式,沒有次方運算子。
也就是說,3^2 表示「3 XOR 2」,而不是「3 的平方」。
這一點尤其令人困惑,因為在「最近點」演算法中使用「^」計算畢氏定理時,您會得到看起來大致正確但卻帶有誤差的結果。
(PHP 4, PHP 5, PHP 7, PHP 8)
pow — 指數運算式
num
要使用的基底
exponent
指數
將 num
乘以自身 exponent
次。如果兩個參數都是非負整數,且結果可以表示為整數,則結果將以 int 類型返回,否則將以 float 類型返回。
PHP 擴充套件可能會覆寫此操作的行為,並使其返回一個物件。
版本 | 說明 |
---|---|
8.4.0 | 將 0 乘以負的 exponent 次方現已棄用。 |
範例 #1 一些 pow() 的例子
<?php
var_dump(pow(2, 8)); // int(256)
echo pow(-1, 20), PHP_EOL; // 1
echo pow(0, 0), PHP_EOL; // 1
echo pow(10, -1), PHP_EOL; // 0.1
var_dump(pow(new GMP("3"), new GMP("2"))); // object(GMP)
echo pow(-1, 5.5); // NAN
?>
注意:
此函式會將所有輸入轉換為數字,即使是非純量值也會轉換,這可能會導致*奇怪的*結果。
許多程式語言使用「^」作為次方運算子,但在 PHP(和其他基於 C 的語言)中,它實際上是 XOR 運算子。您需要使用 `pow` 函式,沒有次方運算子。
也就是說,3^2 表示「3 XOR 2」,而不是「3 的平方」。
這一點尤其令人困惑,因為在「最近點」演算法中使用「^」計算畢氏定理時,您會得到看起來大致正確但卻帶有誤差的結果。
從 PHP 5.6.0alpha2 開始,新增了指數運算子。如果這一點保留在最終版本中,則可能值得在此處說明。
<?php
// 從 PHP 5.6.0 開始,以下兩者將等效
$x = $y ** 2;
$x = pow($y, 2);
?>