W3docs

pow()

Функция pow() в PHP возводит число в степень. Разберём синтаксис, типы возвращаемых значений и граничные случаи.

Функция pow() возводит число в степень — то есть вычисляет base, умноженное само на себя exponent раз. На этой странице рассматриваются синтаксис, тип возвращаемого значения, отличие от оператора **, а также граничные случаи (отрицательные, дробные и нулевые показатели), которые часто вызывают затруднения.

Синтаксис

pow(int|float $base, int|float $exponent): int|float|object
  • $base — число, которое нужно возвести в степень.
  • $exponent — показатель степени.

Функция возвращает $base, возведённое в степень $exponent. Тип результата зависит от входных данных: если оба аргумента являются неотрицательными целыми числами и результат помещается в целое число, возвращается int; в противном случае возвращается float.

Базовый пример

php— editable, runs on the server

Здесь мы возводим 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.

Практика

Практика
Какова функциональность функции 'pow' в PHP?
Какова функциональность функции 'pow' в PHP?
Was this page helpful?