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 : méthode statique log1p()

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

La fonction Math.log1p() retourne 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));
// Sortie attendue : 0.6931471805599453

console.log(Math.log1p(0));
// Sortie attendue : 0

console.log(Math.log1p(-1));
// Sortie attendue : -Infinity

console.log(Math.log1p(-2));
// Sortie attendue : 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 retourné. Si x est inférieur à -1, NaN est retourné.

Description

Pour des très petites valeurs de x, l'ajout de 1 peut réduire, voire éliminer, la précision. Les nombres à virgule flottante de type double utilisés en JS offrent une précision d'environ 15 chiffres. 1 + 1e-15 = 1,000000000000001, mais 1 + 1e-16 = 1,000000000000000 et donc exactement 1,0 dans ce calcul, car les chiffres au-delà du 15e sont arrondis.

Lorsque vous calculez log(1 + x), où x est un petit nombre positif, vous devez obtenir un résultat très proche de x car : limx0log(1+x)x=1\lim_{x \to 0} \frac{\log(1+x)}{x} = 1. Si vous calculez Math.log(1 + 1.1111111111e-15), vous obtenez une réponse proche de 1.1111111111e-15. Au lieu de cela, vous finissez par calculer le logarithme de 1.00000000000000111022 (l'arrondi se fait en binaire, ce qui donne parfois des résultats peu esthétiques), et obtenez le résultat 1,11022…e-15, avec seulement 3 chiffres corrects. Si vous calculez plutôt Math.log1p(1.1111111111e-15), vous obtenez une réponse bien plus précise, 1.1111111110999995e-15, avec 15 chiffres corrects de précision (en réalité 16 dans ce cas).

Si la valeur de x est inférieure à -1, la valeur retournée est toujours NaN.

Puisque log1p() est une méthode statique de Math, vous l'utilisez toujours sous la forme Math.log1p(), plutôt que comme une méthode d'un objet Math que vous avez créé (Math n'est pas un constructeur).

Exemples

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

Spécification
ECMAScript® 2027 Language Specification
# sec-math.log1p

Compatibilité des navigateurs

Voir aussi