Signatur
Beschreibung
Math.log10() ist eine statische Methode des Math-Objekts. Sie berechnet den dekadischen Logarithmus (Zehnerlogarithmus) von x. Weil Math kein Konstruktor ist, ruft man die Methode immer direkt als Math.log10() auf.
Typische Einsatzfälle sind die Bestimmung der Stellenzahl einer Zahl, die Größenordnung eines Werts (z. B. zum Skalieren von Diagrammachsen oder zum Formatieren von Dateigrößen), die Umrechnung in Dezibel sowie logarithmische Skalen allgemein (pH-Wert, Richterskala).
Das Argument wird vor der Berechnung in eine Zahl umgewandelt. Für x < 0 ist das Ergebnis NaN, für 0 (und -0) ergibt sich -Infinity, für 1 ergibt sich 0 und für Infinity ergibt sich Infinity.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $x Pflicht | number | Die Zahl, deren Zehnerlogarithmus berechnet wird. Andere Typen werden per Number()-Umwandlung konvertiert. |
Rückgabewert
x. NaN bei negativen Werten oder nicht umwandelbaren Argumenten, -Infinity bei 0.Beispiele
Grundlegende Werte
console.log(Math.log10(1000));
console.log(Math.log10(1));
console.log(Math.log10(0.01));
console.log(Math.log10(0));
console.log(Math.log10(-5));
console.log(Math.log10('100'));
Anzahl der Ziffern einer ganzen Zahl bestimmen
const digitCount = (n) => {
const abs = Math.abs(Math.trunc(n));
return abs === 0 ? 1 : Math.floor(Math.log10(abs)) + 1;
};
console.log(digitCount(0));
console.log(digitCount(7));
console.log(digitCount(12345));
console.log(digitCount(-9870));
Leistungsverhältnis in Dezibel umrechnen
// dB = 10 * log10(P / P0)
const toDecibel = (power, reference = 1) => 10 * Math.log10(power / reference);
console.log(toDecibel(100).toFixed(1));
console.log(toDecibel(0.5).toFixed(2));
„Schöne“ Achsenschritte für ein Diagramm
const niceStep = (range, ticks = 5) => {
const rough = range / ticks;
const magnitude = 10 ** Math.floor(Math.log10(rough));
const residual = rough / magnitude;
const factor = residual > 5 ? 10 : residual > 2 ? 5 : residual > 1 ? 2 : 1;
return factor * magnitude;
};
console.log(niceStep(873));
console.log(niceStep(0.37));
// Wichtig · Fallstricke
- Gleitkomma-Ungenauigkeit: Die Ergebnisse sind nicht immer exakt. Verlässt man sich bei Grenzwerten nahe an Zehnerpotenzen auf
Math.floor(Math.log10(x)), kann das um eins danebenliegen, besonders bei sehr großen Zahlen überNumber.MAX_SAFE_INTEGER. Für exakte Stellenzahlen bei ganzen Zahlen istString(Math.abs(n)).length(bzw. beiBigIntn.toString().length) robuster. - Kein BigInt:
Math.log10(10n)wirft einenTypeError. - Randfälle:
0ergibt-Infinity, negative Zahlen ergebenNaN. Eingaben daher vorher prüfen, wenn das Ergebnis weiterverarbeitet wird. - Kompatibilität: Wird ab ES2015 in allen modernen Browsern und in Node.js unterstützt. Für sehr alte Umgebungen lässt sich die Methode mit
Math.log(x) / Math.LN10nachbilden (ist aber etwas ungenauer). - Für die umgekehrte Rechnung (10 hoch y) nutzt man
10 ** yoderMath.pow(10, y).