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
$numcomofloat.
A relação definidora é simples: se log10($x) é $y, então pow(10, $y) é $x.
Exemplo básico
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 alog($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.