非常教程

JavaScript参考手册

Math

Math.log1p

Math.log1p() 函数返回一个数字加1后的自然对数 (底为 E), 既log(x+1).

∀x>-1,Math.log1p(x)=ln(1+x)\forall x > -1, \mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)

语法

Math.log1p(x)

参数

x一个数值。

返回值

自然对数(底数e的)1加上所述给定数量。如果数字小于-1,则返回NaN

描述

对于非常小的x值,加1可以降低或消除精度。JS中使用的双浮点数可以提供大约15位的精度。1 + 1e-15 = 1.000000000000001,但1 + 1e-16 = 1.000000000000000,因此该算术中恰好为1.0,因为过去15位的数字被四舍五入。

当你计算log(1 + x)时,如果x很小(这就是为什么这些被称为“自然”对数),你应该得到一个非常接近x的答案。如果你计算Math.log(1 + 1.1111111111e-15)你应该得到一个答案接近1.1111111111e-15。相反,你最终将采取1.00000000000000111022的对数(舍入是二进制的,所以有时会变得难看),所以你得到答案1.11022 ... e-15,也就是只有3个正确的数字。相反,如果你计算Math.log1p(1.1111111111e-15),你将得到一个更准确的答案1.1111111110999995e-15,精度为15个正确的数字(在这种情况下实际上是16)。

如果参数的值小于-1, 则返回 NaN.

因为log1p()Math的一个静态方法,用作Math.log1p(),而不是你创建的Math对象的方法(Math不是一个构造函数)。

示例

使用Math.log1p()

Math.log1p(1);  // 0.6931471805599453
Math.log1p(0);  // 0
Math.log1p(-1); // -Infinity
Math.log1p(-2); // NaN

备注

这可以用以下函数来模拟:

Math.log1p = Math.log1p || function(x) {
  return Math.log(1 + x);
};

规范

Specification

Status

Comment

ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Math.log1p' in that specification.

Standard

Initial definition.

ECMAScript Latest Draft (ECMA-262)The definition of 'Math.log1p' in that specification.

Draft

浏览器兼容性

Feature

Chrome

Firefox

Edge

Internet Explorer

Opera

Safari

Basic Support

38

25

(Yes)

(No)

25

7.1

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

Basic Support

(Yes)

(Yes)

(Yes)

25

(No)

(Yes)

8

JavaScript

JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络