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 July 2015.

Phương thức tĩnh Math.log1p() trả về logarithm tự nhiên (cơ số e) của 1 + x, trong đó x là đối số. Cụ thể:

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

Try it

console.log(Math.log1p(1));
// Expected output: 0.6931471805599453

console.log(Math.log1p(0));
// Expected output: 0

console.log(Math.log1p(-1));
// Expected output: -Infinity

console.log(Math.log1p(-2));
// Expected output: NaN

Cú pháp

js
Math.log1p(x)

Tham số

x

Một số lớn hơn hoặc bằng -1.

Giá trị trả về

Logarithm tự nhiên (cơ số e) của x + 1. Nếu x bằng -1, trả về -Infinity. Nếu x < -1, trả về NaN.

Mô tả

Đối với các giá trị x rất nhỏ, việc cộng thêm 1 có thể làm giảm hoặc mất độ chính xác. Số thực dấu phẩy động 64-bit dùng trong JS cho bạn khoảng 15 chữ số có nghĩa. 1 + 1e-15 = 1.000000000000001, nhưng 1 + 1e-16 = 1.000000000000000 và chính xác là 1.0 trong phép tính đó, vì các chữ số sau 15 bị làm tròn.

Khi tính log(1 + x), trong đó x là số dương nhỏ, bạn sẽ nhận được kết quả rất gần x vì: limx0log(1+x)x=1\lim_{x \to 0} \frac{\log(1+x)}{x} = 1. Nếu tính Math.log(1 + 1.1111111111e-15), bạn sẽ nhận được kết quả gần 1.1111111111e-15. Thay vào đó, bạn sẽ tính logarithm của 1.00000000000000111022 (làm tròn ở hệ nhị phân), và nhận được 1.11022…e-15, chỉ có 3 chữ số đúng. Nếu tính Math.log1p(1.1111111111e-15), bạn sẽ nhận được kết quả chính xác hơn nhiều: 1.1111111110999995e-15, với 15 chữ số đúng (thực ra là 16 trong trường hợp này).

Nếu giá trị của x nhỏ hơn -1, giá trị trả về luôn là NaN.

log1p() là một phương thức tĩnh của Math, bạn luôn sử dụng nó dưới dạng Math.log1p(), thay vì là phương thức của một đối tượng Math bạn tạo ra (Math không phải là constructor).

Ví dụ

Sử dụng 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

Đặc tả kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-math.log1p

Tương thích trình duyệt

Xem thêm