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

Number.MAX_SAFE_INTEGER 静态数据属性表示在 JavaScript 中最大的安全整数(253 – 1)。

对于更大的整数,请考虑使用 BigInt

尝试一下

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

9007199254740991(9,007,199,254,740,991,或者约 9 千万亿)。

Number.MAX_SAFE_INTEGER 的属性特性
可写
可枚举
可配置

描述

双精度浮点格式只有 52 位用于表示尾数,因此它只能安全地表示介于 -(253 – 1) 和 253 – 1 之间的整数。本文中,“安全”指的是能够精确表示整数并正确比较它们。例如,Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 的结果将为真,这在数学上是不正确的。有关更多信息,请参阅 Number.isSafeInteger()

由于 MAX_SAFE_INTEGERNumber 的静态属性,你应该始终将其使用为 Number.MAX_SAFE_INTEGER,而不是一个数字值的属性。

示例

MAX_SAFE_INTEGER 的返回值

js
Number.MAX_SAFE_INTEGER; // 9007199254740991

MAX_SAFE_INTEGER 和 EPSILON 之间的关系

Number.EPSILON 是 2-52,而 MAX_SAFE_INTEGER 是 253 – 1,它们都源自尾数的宽度,即 53 位(最高位始终为 1)。将它们相乘会得到一个非常接近但不等于 2 的值。

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

规范

Specification
ECMAScript® 2025 Language Specification
# sec-number.max_safe_integer

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
MAX_SAFE_INTEGER

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见