PHP exp() 函数

定义和用法

exp() 函数返回 enum 次方的值,其中 e 是自然对数的底数(约等于 2.71828182845904523536)。

提示:如需计算其他底数的指数,可以使用 pow() 函数。相反的操作(自然对数)可以使用 log() 函数。

语法

exp(float $num): float
参数 描述
num 必需。规定指数的幂次。

返回值

返回 enum 次方的值(浮点数)。

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+
  • PHP 8+

示例

示例 1:基本用法

<?php
echo exp(0) . "<br>";   // 1
echo exp(1) . "<br>";   // 约 2.718281828459 (e)
echo exp(2) . "<br>";   // 约 7.3890560989307 (e²)
echo exp(-1) . "<br>";  // 约 0.36787944117144 (1/e)
?>

输出:

1
2.718281828459
7.3890560989307
0.36787944117144

示例 2:处理大数

<?php
// 对于很大的正数,exp() 可能返回 INF(无穷大)
$large = 1000;
$result = exp($large);
if (is_infinite($result)) {
    echo "exp($large) 结果溢出,返回 INF";
} else {
    echo "exp($large) = $result";
}
?>

输出:

exp(1000) 结果溢出,返回 INF

示例 3:实际应用 - 复利计算

<?php
// 连续复利公式 A = P * e^(rt)
function compoundInterestContinuous($principal, $rate, $time) {
    return $principal * exp($rate * $time);
}

$principal = 1000;  // 本金
$rate = 0.05;       // 年利率 5%
$time = 3;          // 3 年

$amount = compoundInterestContinuous($principal, $rate, $time);
echo "本金 $principal,连续复利 $rate,$time 年后本息和为:" . round($amount, 2);
?>

输出:

本金 1000,连续复利 0.05,3 年后本息和为:1161.83

相关函数

  • log() - 自然对数
  • log10() - 以10为底的对数
  • pow() - 指数表达式
  • expm1() - 返回 exp(num) - 1,即使 num 接近 0 也能准确计算
  • sqrt() - 平方根

注意事项

重要:
  • num 太大时,结果可能溢出并返回 INF(无穷大)。溢出阈值取决于平台(通常 num > 709 会导致双精度浮点数溢出)。
  • 由于浮点数精度限制,结果可能与理论值存在微小误差,但在大多数应用中可接受。
  • 传入非数值类型参数会导致警告(PHP 7+)或 TypeError(PHP 8+)。