W3docs

log10()

Die Funktion log10() in PHP berechnet den Logarithmus zur Basis 10 einer Zahl. Syntax, Sonderfälle und praktische Beispiele.

Die Funktion log10() gibt den Logarithmus zur Basis 10 einer Zahl zurück — also den Exponenten, auf den 10 erhöht werden muss, um die betreffende Zahl zu erhalten. Da log10(1000) gleich 3 ist (weil 10³ = 1000), eignet sie sich hervorragend für das Arbeiten mit Größenordnungen: Dezibel, pH-Wert, die Richter-Skala und die Frage „Wie viele Stellen hat diese Zahl?"

Diese Seite behandelt die Syntax, Sonderfälle (null, negative Zahlen, sehr kleine Werte), den Unterschied zu log() und einige praktische Formeln, die sich direkt im Code einsetzen lassen.

Syntax

log10(float $num): float
  • $num — der Wert, dessen Logarithmus zur Basis 10 berechnet werden soll. Er muss eine positive Zahl sein.
  • Rückgabewert — der Logarithmus zur Basis 10 von $num als float.

Die grundlegende Beziehung ist einfach: Wenn log10($x) gleich $y ist, dann ist pow(10, $y) gleich $x.

Einfaches Beispiel

php— editable, runs on the server

log10(100) ist 2, weil 10² = 100. Ebenso ist log10(1000) gleich 3 und log10(1) gleich 0, da jede Zahl, die auf die Potenz 0 erhöht wird, 1 ergibt.

Ein Wertebereich

Das Ergebnis steigt genau um 1, wenn der Eingabewert mit 10 multipliziert wird, und wird für Werte unter 1 negativ:

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

log10(50) liegt zwischen 1 und 2, weil 50 zwischen 10¹ und 10² liegt.

Sonderfälle: null und negative Zahlen

Der Logarithmus von 0 ist undefiniert (10 lässt sich durch keine Potenz auf 0 bringen), und Logarithmen negativer Zahlen sind keine reellen Zahlen. PHP signalisiert diese Fälle mit speziellen float-Werten, anstatt eine Ausnahme auszulösen:

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

Bei benutzerseitig gelieferten Eingaben sollte man diese Fälle absichern:

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

Es ist auch möglich, ein Ergebnis mit is_nan() und is_infinite() zu prüfen, wenn man log10() lieber erst aufruft und das Resultat anschließend auswertet.

log10() vs. log()

Beide Funktionen berechnen Logarithmen, jedoch mit unterschiedlichen Basen:

  • log10($x) — immer Basis 10. Entspricht log($x, 10).
  • log($x) — Basis e (der natürliche Logarithmus, ≈ 2,718), wenn mit einem Argument aufgerufen.
  • log($x, $base) — Logarithmus zu einer beliebig angegebenen Basis.

log10($x) und log($x, 10) liefern also denselben Wert; log10() ist nur eine schnellere und klarere Kurzform für den häufig benötigten Logarithmus zur Basis 10. Für Logarithmen zur Basis 2 verwendet man log($x, 2). Weitere Informationen bieten log() für die universelle Variante und log1p() für genaue Logarithmen von Werten nahe 1.

Praktisches Beispiel: Stellen zählen

Ein verbreiteter Trick: Die Anzahl der Stellen einer positiven ganzen Zahl ergibt sich aus 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
?>

Das funktioniert, weil log10() die Größenordnung direkt angibt.

Fazit

log10() gibt den Logarithmus zur Basis 10 einer Zahl zurück — also den Exponenten, den 10 benötigt, um diesen Wert zu erreichen. Drei Dinge sollte man sich merken: Das Ergebnis steigt um 1 für jede Verzehnfachung des Eingabewerts, der Eingabewert muss positiv sein (0 ergibt -INF, negative Werte ergeben NAN), und log10($x) ist identisch mit log($x, 10). Für andere Basen greift man auf log() zurück, und alle mathematischen Hilfsfunktionen findet man unter PHP Math.

Übungen

Übung
Was gibt die PHP-Funktion log10() für log10(1000) zurück?
Was gibt die PHP-Funktion log10() für log10(1000) zurück?
Was this page helpful?