pow

(PHP 3, PHP 4, PHP 5)

pow -- 指数表达式

说明

number pow ( number base, number exp )

返回 baseexp 次方的幂。如果可能,本函数会返回 integer

如果不能计算幂,将发出一条警告,pow() 将返回 FALSE。PHP 4.2.0 版开始 pow() 不要产生任何的警告。

注: PHP 不能处理负数的 base

例子 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); // error

?>

警告

在 PHP 4.0.6 及之前版本中,pow() 总是返回 float,并且不产生警告。

参见 exp()sqrt()bcpow() gmp_pow() 和。


add a note add a note User Contributed Notes
moikboy (nospam) moikboy (nospam) hu
10-May-2006 04:27
Here is a function for calculating the $k-th root of $a :

<?php
function root($a,$k){return(($a<0&&$k%2>0)?-1:1)*pow(abs($a),1/$k);};
?>
admin at mattwilko dot com
08-Apr-2005 12:32
Here's a function that works with negative powers:

<?php
function newpow($base, $power)
{
if (
$power < 0) {
$npower = $power - $power - $power;
return
1 / pow($base, $npower);
}
else
{
return
pow($base, $power);
}
}
?>
louis [at] mulliemedia.com
01-Jan-2005 12:02
Here's a pow() function that allows negative bases :
<?php
function npow($base, $exp)
{
  
$result = pow(abs($base), $exp);
   if (
$exp % 2 !== 0) {
      
$result = - ($result);
   }
   return
$result;
}
?>
janklopper .AT. gmail dot.com
10-Nov-2004 10:26
since pow doesn't support decimal powers, you can use a different sollution,

thanks to dOt for doing the math!

a^b = e^(b log a)
which is no the 10log but the e-log (aka "ln")

so instead of: pow( $a , 0.6 ) use something like: exp( 0.6 * log($a) )
matthew underscore kay at ml1 dot net
18-Mar-2004 03:03
As of PHP5beta4, pow() with negative bases appears to work correctly and without errors (from a few cursory tests):

pow(-3, 3) = -27
pow(-3, 2) = 9
pow(-5, -1) = -0.2
bishop
18-Jul-2003 11:01
A couple of points on pow():
1. One of the official examples of pow(2,8) is not pragmatic; use 1 << 8 as it's substantially faster
2. When passing variables to pow(), cast them otherwise you might get warnings on some versions of PHP
3. All the rules of algebra apply: b**(-e) is 1/(b**e), b**(p/q) is the qth root of b**p

So, e.g., sqrt($x) === pow($x, .5); but sqrt() is faster.