pow
(PHP 4, PHP 5, PHP 7, PHP 8)
pow — 指数表达式
说明
pow(number
$base
, number $exp
): number
返回 base
的
exp
次方的幂。如果可能,本函数会返回
integer。
参数
-
base
-
The base to use
-
exp
-
指数
返回值
base
的
exp
次方的幂。
If both arguments are non-negative integers and the result can be represented
as an integer, the result will be returned with integer type,
otherwise it will be returned as a float.
更新日志
版本 | 说明 |
---|---|
4.2.0 |
如果不能计算幂,将发出一条警告,pow() 将返回 false 。pow() 开始不产生任何的警告。
|
4.0.6 | 如果可能函数现在会返回 integer 的结果,之前 总是返回 float,For older versions, you may receive a bogus result for complex numbers. |
范例
示例 #1 pow() 的一些例子
<?php
var_dump(pow(2, 8)); // int(256)
echo pow(-1, 20); // 1
echo pow(0, 0); // 1
echo pow(-1, 5.5); // PHP >4.0.6 NAN
echo pow(-1, 5.5); // PHP <=4.0.6 1.#IND
?>
注释
注意:
本函数会转换所有输入为数字,即使是非标量值,会导致怪异的(
weird
)结果。

User Contributed Notes 6 notes
chris at ocportal dot com ¶
10 years ago
Many notations use "^" as a power operator, but in PHP (and other C-based languages) that is actually the XOR operator. You need to use this 'pow' function, there is no power operator.
i.e. 3^2 means "3 XOR 2" not "3 squared".
It is particular confusing as when doing Pythagoras theorem in a 'closet points' algorithm using "^" you get results that look vaguely correct but with an error.
raiika ¶
3 years ago
It is official now that you could use
<?php
2 ** 3; // 8
// instead of
pow(2, 3); // 8
?>
gilthansREMOVEME at gmail dot com ¶
15 years ago
Note that pow(0, 0) equals to 1 although mathematically this is undefined.
Roman ¶
1 year ago
If you use negative numbers, you need to use brackets for using with **
<?php
-1 ** 2; // -1
(-1) ** 2; // 1
?>
scott at arciszewski dot me ¶
8 years ago
As of PHP 5.6.0alpha2, there is now an exponentiation operator. If this is kept in the final release, it may be worth noting here.
<?php
// These two will be equivalent as of PHP 5.6.0
$x = $y ** 2;
$x = pow($y, 2);
?>
jaxx1rr at gmail dot com ¶
2 years ago
funny thing
number_format(pow(2, 1023));
gives a long number
but number_format(pow(2, 1024));
gives inf