log10()
La funzione log10() in PHP calcola il logaritmo in base 10 di un numero. Scopri sintassi, casi limite e utilizzi pratici.
La funzione log10() restituisce il logaritmo in base 10 di un numero, ossia la potenza alla quale 10 deve essere elevato per produrre quel numero. Poiché log10(1000) vale 3 (dato che 10³ = 1000), è lo strumento naturale per lavorare con gli ordini di grandezza: decibel, scala del pH, scala Richter e "quante cifre ha questo numero."
Questa pagina tratta la sintassi, i casi limite (zero, numeri negativi, numeri molto piccoli), la differenza rispetto a log() e alcune formule concrete da inserire nel codice.
Sintassi
log10(float $num): float$num— il valore di cui si vuole calcolare il logaritmo in base 10. Deve essere un numero positivo.- Valore restituito — il logaritmo in base 10 di
$numcomefloat.
La relazione fondamentale è semplice: se log10($x) vale $y, allora pow(10, $y) vale $x.
Esempio base
log10(100) è 2 perché 10² = 100. Allo stesso modo, log10(1000) è 3 e log10(1) è 0, poiché qualsiasi numero elevato alla potenza 0 vale 1.
Un intervallo di valori
Il risultato aumenta esattamente di 1 ogni volta che l'input viene moltiplicato per 10, e diventa negativo per valori inferiori a 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
?>Si noti che log10(50) è compreso tra 1 e 2, perché 50 è compreso tra 10¹ e 10².
Casi limite: zero e numeri negativi
Il logaritmo di 0 è indefinito (non è possibile raggiungere 0 elevando 10 a qualsiasi potenza) e i logaritmi dei numeri negativi non sono reali. PHP segnala questi casi con valori float speciali anziché generare un'eccezione:
<?php
var_dump(log10(0)); // float(-INF)
var_dump(log10(-5)); // float(NAN)
?>Occorre proteggersi da questi casi quando l'input proviene dall'utente:
<?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
?>È anche possibile verificare il risultato con is_nan() e is_infinite() se si preferisce chiamare prima log10() e controllare in seguito.
log10() vs. log()
Entrambe le funzioni calcolano logaritmi, ma con basi diverse:
log10($x)— sempre base 10. Equivalente alog($x, 10).log($x)— base e (il logaritmo naturale, ≈ 2,718) se chiamata con un solo argomento.log($x, $base)— logaritmo in qualsiasi base specificata.
Quindi log10($x) e log($x, 10) restituiscono lo stesso valore; log10() è semplicemente un'abbreviazione più rapida e chiara per il caso comune della base 10. Per i logaritmi in base 2, utilizzare log($x, 2). Vedi log() per la versione di uso generale e log1p() per logaritmi accurati di valori vicini a 1.
Utilizzo pratico: contare le cifre
Un trucco comune: il numero di cifre di un intero 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
?>Questo funziona perché log10() indica direttamente l'ordine di grandezza.
Conclusione
log10() restituisce il logaritmo in base 10 di un numero, ovvero l'esponente a cui 10 deve essere elevato per raggiungere quel valore. Tre cose da ricordare: il risultato aumenta di 1 per ogni ×10 nell'input, l'input deve essere positivo (0 restituisce -INF, i negativi restituiscono NAN) e log10($x) è identico a log($x, 10). Per altre basi si può usare log(), e si può esplorare l'insieme completo delle funzioni matematiche in PHP Math.