Number.MAX_SAFE_INTEGER

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

Thuộc tính dữ liệu tĩnh Number.MAX_SAFE_INTEGER biểu diễn số nguyên an toàn tối đa trong JavaScript (253 – 1).

Với các số nguyên lớn hơn, hãy cân nhắc sử dụng BigInt.

Try it

const x = Number.MAX_SAFE_INTEGER + 1;
const y = Number.MAX_SAFE_INTEGER + 2;

console.log(Number.MAX_SAFE_INTEGER);
// Expected output: 9007199254740991

console.log(x);
// Expected output: 9007199254740992

console.log(x === y);
// Expected output: true

Giá trị

9007199254740991 (9.007.199.254.740.991, hay ~9 nghìn tỷ).

Property attributes of Number.MAX_SAFE_INTEGER
Writableno
Enumerableno
Configurableno

Mô tả

Định dạng dấu phẩy động độ chính xác đôi chỉ có 52 bit để biểu diễn phần định trị, vì vậy nó chỉ có thể biểu diễn an toàn các số nguyên trong khoảng -(253 – 1) đến 253 – 1. "An toàn" trong bối cảnh này đề cập đến khả năng biểu diễn số nguyên chính xác và so sánh chúng đúng cách. Ví dụ, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 sẽ đánh giá là true, điều này không đúng về mặt toán học. Xem Number.isSafeInteger() để biết thêm thông tin.

Như đề cập trong Number.EPSILON, độ chính xác của số phụ thuộc vào độ lớn của chúng. Number.MAX_SAFE_INTEGER biểu diễn giá trị lớn nhất mà các phép toán cấp độ số nguyên có thể được thực hiện chính xác, nhưng bạn vẫn có thể thực hiện các phép toán có ý nghĩa trên các số lớn hơn, chỉ là không có độ chính xác cấp độ số nguyên. Số lớn nhất có thể biểu diễn trong JavaScript thực ra là Number.MAX_VALUE, xấp xỉ 1.7976931348623157 × 10308.

MAX_SAFE_INTEGER là thuộc tính tĩnh của Number, bạn luôn sử dụng nó là Number.MAX_SAFE_INTEGER, thay vì là thuộc tính của một giá trị số.

Ví dụ

Giá trị trả về của MAX_SAFE_INTEGER

js
Number.MAX_SAFE_INTEGER; // 9007199254740991

Mối quan hệ giữa MAX_SAFE_INTEGER và EPSILON

Number.EPSILON là 2-52, trong khi MAX_SAFE_INTEGER là 253 – 1 — cả hai đều được suy ra từ chiều rộng của phần định trị, là 53 bit (với bit cao nhất luôn là 1). Nhân chúng với nhau sẽ cho ra giá trị rất gần — nhưng không bằng — 2.

js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998

Đặc tả

Thông số kỹ thuật
ECMAScript® 2027 Language Specification
# sec-number.max_safe_integer

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

Xem thêm