log() 函数返回一个数的自然对数(以 e 为底)。如果指定了可选的 base 参数,则返回以该底数为底的对数。
log(float $num, float $base = M_E): float
| 参数 | 描述 |
|---|---|
num |
必需。规定要计算对数的值。必须为正数。 |
base |
可选。规定对数底数。如果省略,默认使用自然对数(底数为 e)。 |
返回指定数的对数(浮点数)。如果 num 是负数或零,返回 NAN(非数字)。如果 base 是 1,也返回 NAN。
<?php
echo log(1) . "<br>"; // 0
echo log(10) . "<br>"; // 约 2.302585092994 (自然对数)
echo log(100, 10) . "<br>"; // 2 (以10为底)
echo log(8, 2) . "<br>"; // 3 (以2为底)
?>
输出:
0
2.302585092994
2
3
<?php
$invalid = [-1, 0, 1, 10];
foreach ($invalid as $value) {
$result = log($value, 10);
if (is_nan($result)) {
echo "log($value, 10) = NAN (无效输入)<br>";
} else {
echo "log($value, 10) = $result<br>";
}
}
?>
输出:
log(-1, 10) = NAN (无效输入)
log(0, 10) = NAN (无效输入)
log(1, 10) = 0
log(10, 10) = 1
<?php
// 计算在给定利率下,本金翻倍所需的时间(连续复利)
function doublingTime($rate) {
return log(2) / log(1 + $rate);
}
$rate = 0.05; // 5% 年利率
$years = doublingTime($rate);
echo "年利率 $rate 下,本金翻倍约需 " . round($years, 2) . " 年";
?>
输出:
年利率 0.05 下,本金翻倍约需 14.21 年
num 必须为正数。如果传入负数或零,函数返回 NAN(并可能产生警告)。base 参数为 1,数学上无定义,函数返回 NAN。