W3docs

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 $num come float.

La relazione fondamentale è semplice: se log10($x) vale $y, allora pow(10, $y) vale $x.

Esempio base

php— editable, runs on the server

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 a log($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.

Esercitazione

Pratica
Cosa restituisce la funzione PHP log10() per log10(1000)?
Cosa restituisce la funzione PHP log10() per log10(1000)?
Was this page helpful?