Sqrt: примеры (PHP)

Квадратный корень в PHP: функция sqrt и ее применение
Раздел: Математические функции
sqrt(float num): float
Основы функции sqrt в PHP

Функция 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

В 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 для отрицательных аргументов.

C++
#include 
std::sqrt(25.0);
5.0
Типичные ошибки
Передача нечислового аргумента
echo sqrt("25text");
Warning: sqrt() expects parameter 1 to be float, string given

В PHP 8 такая передача вызывает TypeError.

Сравнение NAN
$result = sqrt(-1);
echo $result == NAN;
(пустой вывод)

NAN нельзя сравнивать обычным оператором, нужно использовать is_nan().

Потеря точности
echo sqrt(0.1 + 0.2) == sqrt(0.3);
(пустой вывод)

Из-за особенностей чисел с плавающей точкой прямое сравнение может не работать.

Изменения в версиях PHP

В 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, даже для целых квадратов.

Расширенные примеры
Расстояние между точками
Пример php
function distance($x1, $y1, $x2, $y2) {
    return sqrt(pow($x2 - $x1, 2) + pow($y2 - $y1, 2));
}
echo distance(0, 0, 3, 4);
5
Решение квадратного уравнения
Пример php
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
)
Нормализация вектора
Пример php
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
)
Фильтрация массива по условию
Пример php
$numbers = [4, 9, 16, 25];
$roots = array_map('sqrt', $numbers);
print_r($roots);
Array
(
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 5
)
Проверка на целый квадрат
Пример php
function isPerfectSquare($n) {
    $root = sqrt($n);
    return $root == (int)$root;
}
var_dump(isPerfectSquare(49));
bool(true)

PHP sqrt function comments

En
Sqrt Returns the square root of a number