exp()
Функция exp() в PHP вычисляет значение e в степени заданного числа. Синтаксис, примеры и типичные ошибки.
Функция exp() в PHP возвращает e в степени заданного числа — то есть e^x. Здесь e (число Эйлера, приближённо равное 2.71828) является основанием натурального логарифма и широко используется в науке и финансах: при расчёте сложных процентов, росте популяций, радиоактивном распаде и в теории вероятностей. На этой странице рассматриваются синтаксис, возвращаемое значение, несколько примеров с разбором, связь с обратной функцией log() и распространённые ошибки.
Синтаксис
exp(float $num): float$num— показатель степени. Любое число (положительное, отрицательное, ноль или вещественное).- Возвращаемое значение —
float: значениеe, возведённого в степень$num.
Поскольку e является иррациональным числом, результат почти всегда является бесконечной десятичной дробью. PHP выводит его с точностью, заданной директивой precision в php.ini (по умолчанию 14 значащих цифр).
Простой пример
Мы передаём 2 в exp(), и функция вычисляет e². Результат 7.3890560989307 — это 2.71828..., умноженное само на себя.
Ключевые опорные значения
Несколько значений аргумента стоит запомнить — они наглядно показывают, что делает функция:
<?php
echo exp(0), "\n"; // 1 (anything^0 is 1)
echo exp(1), "\n"; // 2.718281828459 (this IS e, same as the M_E constant)
echo exp(-1), "\n"; // 0.36787944117144 (e^-1 = 1/e)
echo exp(0.5), "\n";// 1.6487212707001 (the square root of e)
?>exp(0)равно1, так как любое основание, возведённое в степень0, даёт1.exp(1)равно встроенной константе PHPM_E. ИспользуйтеM_Eнапрямую, когда вам просто нужно значение e, без вычислений.- Отрицательный показатель даёт значение от
0до1(e^-x = 1/e^x) — именно так моделируется экспоненциальное затухание.
exp() — обратная функция к log()
Натуральный логарифм, функция PHP log(), отменяет действие exp(), и наоборот. При последовательном применении они возвращают исходное число:
<?php
$x = 5;
echo log(exp($x)), "\n"; // 5
echo exp(log($x)), "\n"; // 5
?>Именно это свойство объясняет, почему exp() появляется везде, где модель выражена через натуральные логарифмы и требуется перейти обратно к обычной шкале.
Практический пример: непрерывное начисление процентов
Классический пример применения exp() — формула непрерывного начисления сложных процентов: A = P · e^(r·t):
<?php
$principal = 1000; // starting amount
$rate = 0.05; // 5% annual rate
$years = 10;
$amount = $principal * exp($rate * $years);
echo round($amount, 2); // 1648.72
?>Через 10 лет $1000, начисляемые непрерывно под 5% годовых, вырастают примерно до $1648.72.
exp() vs. pow()
Легко перепутать exp() с pow():
exp($x)всегда используетeв качестве основания — это то же самое, чтоpow(M_E, $x).pow($base, $exp)позволяет выбрать любое основание, напримерpow(2, 10)для2¹⁰.
Таким образом, exp(3) и pow(M_E, 3) дают одинаковый результат, но используйте pow(), когда основание отличается от e.
Распространённые ошибки
- Не передавайте строку с единицами измерения.
exp("2 apples")приводится кexp(2)(с предупреждением в современных версиях PHP). Всегда передавайте чистое числовое значение. - Большие аргументы вызывают переполнение до
INF.exp(710)выходит за пределы диапазона PHP float и возвращаетINF. Защищайтесь от очень больших показателей, если значение поступает от пользователя. - Отображаемая точность — это не потеря точности. Полный
floatхранится внутренне; усекается только выводимая строка. Используйтеprintf()илиnumber_format(), чтобы управлять количеством отображаемых цифр.
Заключение
exp() возвращает e^x и является строительным блоком для любых вычислений с натуральной экспонентой в PHP — роста, затухания и непрерывного начисления процентов. Помните, что эта функция является обратной к log(), что exp(1) равно константе M_E, и что для основания, отличного от e, следует использовать pow(). Для операций в стиле обратного квадратного корня см. также sqrt().