Sqrt: примеры (PHP)
sqrt(float num): floatФункция sqrt() вычисляет квадратный корень переданного числа. Она применяется в математических расчетах, статистике, геометрии и других областях, где требуется определить корень второй степени.
Функция принимает один обязательный аргумент:
- $num (float|int) - число, из которого извлекается квадратный корень. Если передано отрицательное значение, функция вернет
NAN(Not a Number).
Возвращаемое значение - квадратный корень в виде числа с плавающей точкой (float).
echo sqrt(25);5
echo sqrt(2.25);1.5
echo sqrt(0);0
var_dump(sqrt(-4));float(NAN)
В PHP существуют другие математические функции для степенных вычислений:
- pow($base, $exp) - возведение в произвольную степень. Удобно, когда показатель степени отличается от 0.5.
- $base ** $exp - оператор возведения в степень, доступный с PHP 5.6. Более краткая альтернатива pow().
- gmp_sqrt() из расширения GMP - вычисляет корень целых чисел произвольной точности.
Для квадратного корня предпочтительнее sqrt(), так как функция специализирована и читаема.
Sqrt в Python
import math
print(math.sqrt(25))5.0
Python возвращает float даже для целых квадратов. При отрицательном аргументе выбрасывает ValueError.
Sqrt в Javascript
console.log(Math.sqrt(25));5
JavaScript также возвращает NaN для отрицательных чисел, но тип NaN в JS - number.
Sqrt в MySQL
SELECT SQRT(25);5.000000
MySQL возвращает NULL для отрицательных аргументов.
#include
std::sqrt(25.0); 5.0
echo sqrt("25text");Warning: sqrt() expects parameter 1 to be float, string given
В PHP 8 такая передача вызывает TypeError.
$result = sqrt(-1);
echo $result == NAN;(пустой вывод)
NAN нельзя сравнивать обычным оператором, нужно использовать is_nan().
echo sqrt(0.1 + 0.2) == sqrt(0.3);(пустой вывод)
Из-за особенностей чисел с плавающей точкой прямое сравнение может не работать.
В PHP 8.0 функция sqrt() стала строго типизированной. При передаче нечислового значения теперь выбрасывается TypeError вместо предупреждения и возврата 1.
// PHP 7
var_dump(sqrt("text"));
// Warning и float(1)
// PHP 8
var_dump(sqrt("text"));
// TypeErrorС PHP 8.1 функция всегда возвращает тип float, даже для целых квадратов.
function distance($x1, $y1, $x2, $y2) {
return sqrt(pow($x2 - $x1, 2) + pow($y2 - $y1, 2));
}
echo distance(0, 0, 3, 4);5
function quadratic($a, $b, $c) {
$d = $b*$b - 4*$a*$c;
if ($d < 0) return [];
if ($d == 0) return [-$b/(2*$a)];
$sqrtD = sqrt($d);
return [(-$b - $sqrtD)/(2*$a), (-$b + $sqrtD)/(2*$a)];
}
print_r(quadratic(1, -3, 2));Array
(
[0] => 1
[1] => 2
)function normalizeVector($x, $y, $z) {
$length = sqrt($x*$x + $y*$y + $z*$z);
return [$x/$length, $y/$length, $z/$length];
}
print_r(normalizeVector(2, 0, 0));Array
(
[0] => 1
[1] => 0
[2] => 0
)$numbers = [4, 9, 16, 25];
$roots = array_map('sqrt', $numbers);
print_r($roots);Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
)function isPerfectSquare($n) {
$root = sqrt($n);
return $root == (int)$root;
}
var_dump(isPerfectSquare(49));bool(true)