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 | |
|---|---|
| Writable | no |
| Enumerable | no |
| Configurable | no |
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.
Vì 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
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.
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> |