Math 函数
在线手册:中文 英文
PHP手册

sqrt

(PHP 4, PHP 5)

sqrt平方根

说明

float sqrt ( float $arg )

返回 arg 的平方根。

Example #1 sqrt()

<?php
// Precision depends on your precision directive
echo sqrt(9); // 3
echo sqrt(10); // 3.16227766 ...
?>

参见 pow()


Math 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: 平方根

用户评论:

Husoski (16-Feb-2012 07:04)

This is interesting.  The "xth square root" idea is being used by a couple different posters, but it's not a root at all.  It the logarithm, base x.  In the posted code, it's rounded down to the next smaller or equal integer, but it's still a logarithm.

The full exact value as a float can be computed with log(value)/log(x).  No loops needed.

For true xth roots, use pow(value, 1.0/x).  That gives you the number that produces (value) when raised to the x power.

wietse89 at gmail dot com (27-Nov-2009 08:15)

For the second square root this code will work too:
Note that it doesn't return float values.

<?php
$new
= strlen(decbin(256));
echo
$new; //8
?>

btharper1221 at gmail dot com (15-May-2005 04:48)

this is something you can use if you need an exact answer to a root problem, this includes an echo outside of the function to show how it works, it will return it such as
$ret[0] is the number still part of the root (this is the exactness part of it)
$ret[1] is the number of roots and
$ret[2] is 1 or 0, 1 being that there should be an i following the number of roots (imaginary)

<?php
function newrt($val,$rt){
$i = 0;
if((
$rt % 2 == 0) && ($val < 1)){
$i = 1;
$val = (-$val);
}
$c = 1;
if((
$rt % 2 != 0) && ($val < 0)){
$c = -$c;
$val = -$val;
}
for(
$d = 2; pow($d,$rt) <= abs($val); $d++){
if(
$val % (pow($d,$rt)) == 0){
$val = ($val/(pow($d,$rt)));
$c = ($c*$d);
$d--;
}
}
$ret[0] = $val;
$ret[1] = $c;
$ret[2] = $i;
return
$ret;
}
//end function newrt

$ret = newrt($num,$num2);
if(
$ret[0] != 1){
if(
$ret[2] == 0) echo $ret[1]." roots of ".$ret[0];
if(
$ret[2] == 1) echo $ret[1]."<b><i>i</i></b> roots of ".$ret[0];
}elseif(
$ret[0] == 1){
if(
$ret[2] == 0) echo $ret[1];
if(
$ret[2] == 1) echo "$ret[1]<b><i>i</i></b>";
}
?>

chris DOT rutledge AT gmail DOT com (31-Mar-2005 10:24)

Just a note to say you can take the square root of a negative number - it returns an imaginary number.

One might do it like this

//take initial value of $x

$abs_x = abs($x);
$answer = sqrt($abs_x);

echo $answer;

if ($x < 0) echo"<b><i>i</i></b>";

jouhni at web dot de (17-Feb-2005 07:46)

To get any root of a number your can use the pow() function:

pow(8, 1/3)

which gives you the third root of eight.

Jouhni

bishop (18-Jul-2003 06:09)

Compute a triangle's area:

function triangleArea($a, $b /* ... */) {
    if (func_num_args() === 3) {
        $s = .5 * ($a + $b + ($c = func_get_arg(2)));
        return sqrt($s * ($s-$a) * ($s-$b) * ($s-$c));
    } else {
        return (.5 * $a * $b);
    }
}

With 2 args, parameters are triangle's base and height.  With 3 args, parameters are the lengths of each side.  Argument order is not important.

Either way, you get the area.