Math.log1p()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die statische Methode Math.log1p()
gibt den natürlichen Logarithmus (zur Basis e) von 1 + x
zurück, wobei x
das Argument ist. Das heißt:
Probieren Sie es aus
console.log(Math.log1p(1));
// Expected output: 0.6931471805599453
console.log(Math.log1p(0));
// Expected output: 0
console.log(Math.log1p(-1));
// Expected output: -Infinity
console.log(Math.log1p(-2));
// Expected output: NaN
Syntax
Math.log1p(x)
Parameter
x
-
Eine Zahl größer oder gleich -1.
Rückgabewert
Beschreibung
Bei sehr kleinen Werten von x kann das Addieren von 1 die Präzision verringern oder eliminieren. Die in JS verwendeten Doppel-Fließkommazahlen bieten Ihnen etwa 15 Stellen Präzision. 1 + 1e-15 = 1.000000000000001, aber 1 + 1e-16 = 1.000000000000000 und daher genau 1,0 in dieser Arithmetik, da Stellen über 15 hinaus abgerundet werden.
Wenn Sie log(1 + x) berechnen, wobei x eine kleine positive Zahl ist, sollten Sie eine Antwort sehr nahe bei x erhalten, da: . Wenn Sie Math.log(1 + 1.1111111111e-15)
berechnen, sollten Sie eine Antwort in der Nähe von 1.1111111111e-15
erhalten. Stattdessen berechnen Sie jedoch den Logarithmus von 1.00000000000000111022
(die Rundung ist im Binärsystem, daher sieht es manchmal unschön aus) und erhalten die Antwort 1.11022…e-15, mit nur 3 korrekten Stellen. Wenn Sie stattdessen Math.log1p(1.1111111111e-15)
berechnen, erhalten Sie eine viel genauere Antwort, 1.1111111110999995e-15
, mit 15 korrekten Dezimalstellen (tatsächlich 16 in diesem Fall).
Wenn der Wert von x
kleiner als -1 ist, ist der Rückgabewert immer NaN
.
Da log1p()
eine statische Methode von Math
ist, verwenden Sie sie immer als Math.log1p()
und nicht als Methode eines von Ihnen erstellten Math
-Objekts (Math
ist kein Konstruktor).
Beispiele
Verwendung von Math.log1p()
Math.log1p(-2); // NaN
Math.log1p(-1); // -Infinity
Math.log1p(-0); // -0
Math.log1p(0); // 0
Math.log1p(1); // 0.6931471805599453
Math.log1p(Infinity); // Infinity
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-math.log1p |