Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

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 :

x>1,𝙼𝚊𝚝𝚑.𝚕𝚘𝚐𝟷𝚙(𝚡)=ln(1+x)\forall x > -1,\;\mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)

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

js
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: limx0log(1+x)x=1\lim_{x \to 0} \frac{\log(1+x)}{x} = 1.

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()

js
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

Voir aussi