--- title: Math.log1p() slug: Web/JavaScript/Reference/Global_Objects/Math/log1p tags: - ECMAScript 2015 - JavaScript - Math - Method - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Math/log1p ---
Die Math.log1p()
Funktion gibt den natürlichen Logarithmus (Logarithmus zur Basis {{jsxref("Math.E", "e")}}) von 1 + x zurück. Das bedeutet
Math.log1p(x)
x
Den natürliche Logarithmus (zur Basis {{jsxref("Math.E", "e")}}) von 1 plus der gegebenen Zahl. Wenn die Zahl kleiner als -1 ist, wird {{jsxref("NaN")}} zurückgegeben.
Für sehr kleine Zahlen für x
kann das Addieren mit 1 zu verlusten in der Präzision führen. Die Zahlen in JavaScript haben eine Genauigkeit von 15 Stellen. 1 + 1e-15 = 1.000000000000001
, aber 1 + 1e-16 = 1.000000000000000
und damit exakt 1
.0
in dieser Arithmetik, weil Ziffern nach der 15 Stelle gerundet werden.
Wenn log(1 + x)
berechnet wird, bekommt man ein Ergebnis sehr na an x
, wenn x
klein ist (das ist der Grund, warum es 'natürlicher' Logarithmus heißt). Wenn Math.log(1 + 1.1111111111e-15)
berechnet wird sollte man ein Ergebnis nah an 1.1111111111e-15
bekommt. Stattdessen berechnet man den Logarithmus von 1.00000000000000111022
(die Rundung geschieht im Binärsystem und ist manchmal unschön) un erhält das Ergebnis 1.11022...e-15
mit nur 3 korrekten Stellen. Wenn stattdessen Math.log1p(
1.1111111111e-15
)
berechnet wird, bekommt man ein besseres Ergebnis von 1.1111111110999995e-15
mit 15 korrekten Stellen in der Präzision (aktuell 16 in diesem Fall).
Wenn der Wert von x
kleiner als -1 ist, gibt die Funktion immer den Wert {{jsxref("NaN")}} zurück.
Weil log1p()
eine statische Funktion von Math
ist, wird es immer als Math.log1p()
eingesetzt,
jedoch nicht als Methode eines erzeugten Math
Objektes (Math
ist kein Konstruktor).
Math.log1p()
Math.log1p(1); // 0.6931471805599453 Math.log1p(0); // 0 Math.log1p(-1); // -Infinity Math.log1p(-2); // NaN
Diese Funktion kann folgendermaßen emuliert werden:
Math.log1p = Math.log1p || function(x) { return Math.log(1 + x); };
Spezifikation | Status | Kommentar |
---|---|---|
{{SpecName('ES2015', '#sec-math.log1p', 'Math.log1p')}} | {{Spec2('ES2015')}} | Initiale Definition. |
{{SpecName('ESDraft', '#sec-math.log1p', 'Math.log1p')}} | {{Spec2('ESDraft')}} |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("javascript.builtins.Math.log1p")}}