pow()
Функция pow() в PHP возводит число в степень. Разберём синтаксис, типы возвращаемых значений и граничные случаи.
Функция pow() возводит число в степень — то есть вычисляет base, умноженное само на себя exponent раз. На этой странице рассматриваются синтаксис, тип возвращаемого значения, отличие от оператора **, а также граничные случаи (отрицательные, дробные и нулевые показатели), которые часто вызывают затруднения.
Синтаксис
pow(int|float $base, int|float $exponent): int|float|object$base— число, которое нужно возвести в степень.$exponent— показатель степени.
Функция возвращает $base, возведённое в степень $exponent. Тип результата зависит от входных данных: если оба аргумента являются неотрицательными целыми числами и результат помещается в целое число, возвращается int; в противном случае возвращается float.
Базовый пример
Здесь мы возводим 2 в степень 3, сохраняем результат и выводим его. Поскольку оба аргумента являются неотрицательными целыми числами, pow() возвращает целое число 8.
pow() и оператор **
Начиная с PHP 5.6, оператор возведения в степень ** делает то же самое, что и pow(), и обычно предпочтительнее, поскольку читается более естественно:
<?php
echo pow(2, 10); // 1024
echo "\n";
echo 2 ** 10; // 1024
?>Оба выражения дают 1024. Оператор ** является правоассоциативным, поэтому 2 ** 3 ** 2 вычисляется как 2 ** (3 ** 2), что равно 512, а не 64. Подробнее о приоритете операторов читайте в разделе Операторы PHP.
Отрицательные, дробные и нулевые показатели
pow() не ограничена целыми положительными показателями.
<?php
echo pow(2, -2); // 0.25 -> 1 / (2 * 2)
echo "\n";
echo pow(16, 0.5); // 4 -> the square root of 16
echo "\n";
echo pow(5, 0); // 1 -> any number to the power 0 is 1
echo "\n";
echo pow(-2, 3); // -8 -> a negative base with an integer exponent
?>Основные особенности:
- Отрицательный показатель возвращает обратную величину, поэтому результат будет
float. - Дробный показатель вычисляет корень: возведение в степень
0.5— это квадратный корень,1/3— кубический. Для вычисления квадратного корня рекомендуется использоватьsqrt(). - Любое число в степени 0 равно
1. - Отрицательное основание, возведённое в нецелую степень, не имеет вещественного результата; в этом случае
pow()возвращаетNAN(Not A Number).
Распространённые ошибки
- Большие результаты переполняются до float. На 64-битной системе
pow(2, 63)превышаетPHP_INT_MAX, поэтому результат незаметно становитсяfloatи теряет точность. Помните, что тип результата может измениться. NANдля невозможных корней.pow(-8, 1/3)возвращаетNAN, а не-2, поскольку PHP вычисляет это как вещественную степень.- Строки приводятся к числам.
pow("2", "3")работает и возвращает8, но полагаться на приведение строк ненадёжно — передавайте числа.
Связанные функции
sqrt()— квадратный корень, эквивалентpow($n, 0.5).abs()— абсолютное значение, удобно перед извлечением дробного корня из возможно отрицательного числа.intdiv()— целочисленное деление.- Математические функции PHP — обзор числового инструментария PHP.
Заключение
pow() (или эквивалентный оператор **) возводит число в степень и является основой любого математического кода на PHP. Помните, что тип возвращаемого значения может меняться с int на float в зависимости от аргументов, отрицательные основания с дробными показателями дают NAN, а очень большие результаты переполняются до float.