W3docs

log10()

Aprenda a usar a função log10() no PHP para calcular o logaritmo de base 10 de um número, com exemplos e casos especiais.

A função log10() retorna o logaritmo de base 10 de um número — isto é, a potência à qual 10 deve ser elevado para produzir esse número. Como log10(1000) é 3 (pois 10³ = 1000), é a ferramenta natural para trabalhar com ordens de magnitude: decibéis, escala de pH, escala Richter e "quantos dígitos tem esse número."

Esta página cobre a sintaxe, casos extremos (zero, negativos, números muito pequenos), como ela difere de log() e algumas fórmulas reais que você pode usar no seu código.

Sintaxe

log10(float $num): float
  • $num — o valor cujo logaritmo de base 10 você deseja. Deve ser um número positivo.
  • Valor de retorno — o logaritmo de base 10 de $num como float.

A relação definidora é simples: se log10($x) é $y, então pow(10, $y) é $x.

Exemplo básico

php— editable, runs on the server

log10(100) é 2 porque 10² = 100. Da mesma forma, log10(1000) é 3 e log10(1) é 0, pois qualquer número elevado à potência 0 é igual a 1.

Uma faixa de valores

O resultado cresce exatamente 1 a cada vez que a entrada é multiplicada por 10, e fica negativo para entradas abaixo de 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
?>

Note que log10(50) está entre 1 e 2, porque 50 está entre 10¹ e 10².

Casos extremos: zero e números negativos

O logaritmo de 0 é indefinido (não é possível chegar a 0 elevando 10 a qualquer potência), e logaritmos de números negativos não são reais. O PHP sinaliza esses casos com valores float especiais em vez de lançar exceções:

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

Proteja-se deles quando a entrada for fornecida pelo usuário:

<?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
?>

Você também pode testar um resultado com is_nan() e is_infinite() se preferir chamar log10() primeiro e inspecionar depois.

log10() vs. log()

Ambas as funções calculam logaritmos, mas com bases diferentes:

  • log10($x) — sempre base 10. Equivalente a log($x, 10).
  • log($x) — base e (o logaritmo natural, ≈ 2.718) quando chamada com um argumento.
  • log($x, $base) — logaritmo em qualquer base que você passar.

Portanto, log10($x) e log($x, 10) retornam o mesmo valor; log10() é apenas uma forma mais rápida e clara para o caso comum de base 10. Para logaritmos de base 2, use log($x, 2). Veja log() para a versão de uso geral e log1p() para logaritmos precisos de valores próximos a 1.

Uso prático: contagem de dígitos

Um truque comum: o número de dígitos em um inteiro positivo é 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
?>

Isso funciona porque log10() informa a ordem de magnitude diretamente.

Conclusão

log10() retorna o logaritmo de base 10 de um número — o expoente que 10 precisa para atingir esse valor. Lembre-se de três coisas: o resultado aumenta 1 para cada ×10 na entrada, a entrada deve ser positiva (0 retorna -INF, negativos retornam NAN), e log10($x) é idêntico a log($x, 10). Para outras bases, use log(), e explore o conjunto completo de funções matemáticas em PHP Math.

Prática

Prática
O que a função PHP log10() retorna para log10(1000)?
O que a função PHP log10() retorna para log10(1000)?
Was this page helpful?