PHP log10() 函数

定义和用法

log10() 函数返回一个数以 10 为底的对数(常用对数)。

提示:该函数等价于 log($num, 10)。如需计算自然对数(以 e 为底),请使用 log() 函数;如需以其他底数计算对数,可使用 log($num, $base)

语法

log10(float $num): float
参数 描述
num 必需。规定要计算对数的值。必须为正数。

返回值

返回以 10 为底 num 的对数(浮点数)。如果 num 是负数或零,返回 NAN(非数字)。

PHP 版本

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

示例

示例 1:基本用法

<?php
echo log10(1) . "<br>";    // 0
echo log10(10) . "<br>";   // 1
echo log10(100) . "<br>";  // 2
echo log10(1000) . "<br>"; // 3
?>

输出:

0
1
2
3

示例 2:处理无效输入

<?php
$values = [-1, 0, 5, 50];
foreach ($values as $value) {
    $result = log10($value);
    if (is_nan($result)) {
        echo "log10($value) = NAN (无效输入)<br>";
    } else {
        echo "log10($value) = $result<br>";
    }
}
?>

输出:

log10(-1) = NAN (无效输入)
log10(0) = NAN (无效输入)
log10(5) = 0.69897000433602
log10(50) = 1.698970004336

示例 3:实际应用 - 科学计算(地震震级)

<?php
// 里氏震级公式:M = log10(A) + 3 * log10(8 * Δt) - 2.92
function calculateMagnitude($amplitude, $timeDiff) {
    return log10($amplitude) + 3 * log10(8 * $timeDiff) - 2.92;
}

$amplitude = 23; // 振幅 (mm)
$timeDiff = 2.4; // 时间差 (s)

$magnitude = calculateMagnitude($amplitude, $timeDiff);
echo "震级: " . round($magnitude, 1);
?>

输出:

震级: 5.4

相关函数

  • log() - 自然对数及任意底数对数
  • exp() - 自然指数
  • log1p() - 返回 log(1 + num),精确计算接近零的值
  • pow() - 指数表达式

注意事项

重要:
  • 参数 num 必须为正数。如果传入负数或零,函数返回 NAN 并产生一个警告(PHP 7+)。
  • 由于浮点数精度限制,结果可能与理论值存在微小误差,但在大多数应用中可接受。
  • 传入非数值类型参数会导致警告(PHP 7+)或 TypeError(PHP 8+)。