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 juillet 2015.
La fonction Math.log1p()
renvoie le logarithme népérien (en base e
) d'un nombre +1, donné par la formule :
Exemple interactif
console.log(Math.log1p(1));
// Résultat attendu : 0.6931471805599453
console.log(Math.log1p(0));
// Résultat attendu : 0
console.log(Math.log1p(-1));
// Résultat attendu : -Infinity
console.log(Math.log1p(-2));
// Résultat attendu : NaN
Syntaxe
Math.log1p(x)
Paramètres
x
-
Un nombre supérieur ou égal à -1.
Valeur de retour
La valeur du logarithme naturel (en base e) de x + 1
. Si x
est égal à -1
, -Infinity
est renvoyée. Si x
est inférieur à -1
, NaN
est renvoyée.
Description
Pour une très petite valeur de x, ajouter 1 peut réduire ou éliminer la precision. Les nombre flottants à double précision utilisés en JS une précision d'environ 15 décimales. 1 + 1e-15 = 1.000000000000001, mais 1 + 1e-16 = 1.000000000000000 et donc exactement 1.0 dans cette arithmétique, car les chiffres au-delà de 15 sont arrondis.
Quand on calcule log(1 + x), où x est un petit nombre positif, on devrait obtenir une réponse très proche de x car: .
Si on calcule Math.log(1 + 1.1111111111e-15)
, on devrait obtenir une réponse proche de 1.11111111e-15
. Au lieu de cela, on obtient le logarithme de 1.00000000000000111022
(l'arrondi se fait en binaire, ce qui donne parfois de piètres résultats), et on obtient la réponse 1.11022...e-15, avec seulement 3 chiffres corrects. Si on calcule plutôt Math.log1p(1.1111111111e-15)
, on obtient une réponse beaucoup plus précise, 1.11111110999995e-15
, avec une précision de 15 chiffres (en fait 16 dans ce cas).
Si x
est strictement inférieur à -1, la valeur renvoyée est NaN
.
log1p
étant une méthode statique de Math
, il faut utiliser Math.log1p()
et non pas la méthode d'un autre objet qui aurait été créé (Math
n'est pas un constructeur).
Exemple
>Utiliser 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
Spécifications
Specification |
---|
ECMAScript® 2026 Language Specification> # sec-math.log1p> |
Compatibilité des navigateurs
Loading…
Voir aussi
- Prothèse d'émulation (polyfill en anglais) de
Math.log1p()
: Math.exp()
Math.log()
Math.expm1()
Math.log10()
Math.log2()
Math.pow()