W3docs

log10()

Aprende a usar la función log10() en PHP para calcular el logaritmo en base 10 de un número con ejemplos prácticos.

La función log10() devuelve el logaritmo en base 10 de un número — es decir, la potencia a la que hay que elevar 10 para obtener ese número. Como log10(1000) es 3 (ya que 10³ = 1000), es la herramienta natural para trabajar con órdenes de magnitud: decibelios, la escala de pH, la escala de Richter y "cuántos dígitos tiene este número".

Esta página cubre la sintaxis, los casos límite (cero, negativos, números muy pequeños), cómo difiere de log() y un par de fórmulas reales que puedes incorporar directamente al código.

Sintaxis

log10(float $num): float
  • $num — el valor cuyo logaritmo en base 10 deseas obtener. Debe ser un número positivo.
  • Valor de retorno — el logaritmo en base 10 de $num como un float.

La relación fundamental es simple: si log10($x) es $y, entonces pow(10, $y) es $x.

Ejemplo básico

php— editable, runs on the server

log10(100) es 2 porque 10² = 100. Del mismo modo, log10(1000) es 3 y log10(1) es 0, ya que cualquier número elevado a la potencia 0 es igual a 1.

Un rango de valores

El resultado crece exactamente en 1 cada vez que la entrada se multiplica por 10, y se vuelve negativo para entradas menores que 1:

<?php
echo log10(1000) . "\n";  // 3
echo log10(100)  . "\n";  // 2
echo log10(10)   . "\n";  // 1
echo log10(1)    . "\n";  // 0
echo log10(0.1)  . "\n";  // -1
echo log10(0.001) . "\n"; // -3
echo log10(50)   . "\n";  // 1.6989700043360187
?>

Observa que log10(50) está entre 1 y 2, porque 50 se encuentra entre 10¹ y 10².

Casos límite: cero y números negativos

El logaritmo de 0 es indefinido (nunca se puede llegar a 0 elevando 10 a alguna potencia), y los logaritmos de números negativos no son reales. PHP señala estos casos con valores float especiales en lugar de lanzar una excepción:

<?php
var_dump(log10(0));   // float(-INF)
var_dump(log10(-5));  // float(NAN)
?>

Protégete contra ellos cuando la entrada provenga del usuario:

<?php
function safeLog10($n) {
    if ($n <= 0) {
        return null; // log10 is only defined for positive numbers
    }
    return log10($n);
}

var_dump(safeLog10(100)); // float(2)
var_dump(safeLog10(0));   // NULL
?>

También puedes comprobar el resultado con is_nan() e is_infinite() si prefieres llamar primero a log10() e inspeccionar el resultado después.

log10() vs. log()

Ambas funciones calculan logaritmos, pero con bases diferentes:

  • log10($x) — siempre en base 10. Equivalente a log($x, 10).
  • log($x) — base e (el logaritmo natural, ≈ 2.718) cuando se llama con un solo argumento.
  • log($x, $base) — logaritmo en cualquier base que indiques.

Por tanto, log10($x) y log($x, 10) devuelven el mismo valor; log10() es simplemente una forma más rápida y clara de referirse al caso habitual de base 10. Para logaritmos en base 2, usa log($x, 2). Consulta log() para la versión de propósito general y log1p() para logaritmos precisos de valores cercanos a 1.

Uso práctico: contar dígitos

Un truco habitual: el número de dígitos de un entero positivo es floor(log10($n)) + 1.

<?php
function digitCount($n) {
    return (int) floor(log10($n)) + 1;
}

echo digitCount(7) . "\n";      // 1
echo digitCount(100) . "\n";    // 3
echo digitCount(99999) . "\n";  // 5
?>

Esto funciona porque log10() indica directamente el orden de magnitud.

Conclusión

log10() devuelve el logaritmo en base 10 de un número — el exponente al que hay que elevar 10 para alcanzar ese valor. Recuerda tres cosas: el resultado aumenta en 1 por cada ×10 en la entrada, la entrada debe ser positiva (0 da -INF, los negativos dan NAN) y log10($x) es idéntico a log($x, 10). Para otras bases, recurre a log(), y explora el conjunto completo de funciones matemáticas en PHP Math.

Práctica

Práctica
¿Qué devuelve la función PHP log10() para log10(1000)?
¿Qué devuelve la función PHP log10() para log10(1000)?
Was this page helpful?