Number.MAX_SAFE_INTEGER
constant represents the maximum safe integer in JavaScript (
2
53
- 1
).
For larger integers, consider using
BigInt
.
特性属性在
Number.MAX_SAFE_INTEGER
|
|
|---|---|
| 可写 | no |
| 可枚举 | no |
| 可配置 | no |
MAX_SAFE_INTEGER
constant has a value of
9007199254740991
(9,007,199,254,740,991 or ~9 quadrillion). The reasoning behind that number is that JavaScript uses
double-precision floating-point format numbers
作为指定在
IEEE 754
and can only safely represent numbers between
-(2
53
- 1)
and
2
53
- 1
.
Safe in this context refers to the ability to represent integers exactly and to correctly compare them. For example,
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2
will evaluate to true, which is mathematically incorrect. See
Number.isSafeInteger()
了解更多信息。
This field does not exist in old browsers. Using it without checking its existence, such as
Math.max(Number.MAX_SAFE_INTEGER, 2)
, will yield undesired results such as NaN.
因为
MAX_SAFE_INTEGER
is a static property of
Number
, you always use it as
Number.MAX_SAFE_INTEGER
, rather than as a property of a
Number
object you created.
if (!Number.MAX_SAFE_INTEGER) {
Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
}
Number.MAX_SAFE_INTEGER; // 9007199254740991
This returns 2 because in floating points, the value is actually the decimal trailing "1" except for in subnormal precision cases such as zero.
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of 'Number.MAX_SAFE_INTEGER' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MAX_SAFE_INTEGER
|
Chrome 34 | Edge 12 | Firefox 31 | IE No | Opera 21 | Safari 9 | WebView Android ≤37 | Chrome Android 34 | Firefox Android 31 | Opera Android 21 | Safari iOS 9 | Samsung Internet Android 2.0 | nodejs 0.12 |
完整支持
不支持
Number
Number.isFinite()
Number.isInteger()
Number.isNaN()
Number.isSafeInteger()
Number.parseFloat()
Number.parseInt()
Number.prototype.toExponential()
Number.prototype.toFixed()
Number.prototype.toLocaleString()
Number.prototype.toPrecision()
Number.prototype.toSource()
Number.prototype.toString()
Number.prototype.valueOf()
Function
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()