The Number.isSafeInteger()
method determines whether the provided value is a number that is a safe integer. A safe integer is an integer that
- can be exactly represented as an IEEE-754 double precision number, and
- whose IEEE-754 representation cannot be the result of rounding any other integer to fit the IEEE-754 representation.
For example, 253 - 1
is a safe integer: it can be exactly represented, and no other integer rounds to it under any IEEE-754 rounding mode. In contrast, 253
is not a safe integer: it can be exactly represented in IEEE-754, but the integer 253 + 1
can't be directly represented in IEEE-754 but instead rounds to 253
under round-to-nearest and round-to-zero rounding.
The safe integers consist of all integers from -(253 - 1)
inclusive to 253 - 1
inclusive.
Syntax
Number.isSafeInteger(testValue)
Parameters
testValue
- The value to be tested for being a safe integer.
Return value
A Boolean
indicating whether or not the given value is a number that is a safe integer.
Examples
Number.isSafeInteger(3); // true Number.isSafeInteger(Math.pow(2, 53)); // false Number.isSafeInteger(Math.pow(2, 53) - 1); // true Number.isSafeInteger(NaN); // false Number.isSafeInteger(Infinity); // false Number.isSafeInteger('3'); // false Number.isSafeInteger(3.1); // false Number.isSafeInteger(3.0); // true
Polyfill
Number.isSafeInteger = Number.isSafeInteger || function (value) { return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER; };
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Number.isSafeInteger' in that specification. |
Standard | Initial definition. |
ECMAScript Latest Draft (ECMA-262) The definition of 'Number.isSafeInteger' in that specification. |
Draft |
Browser compatibility
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Feature | Chrome | Firefox | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | (Yes) | 32 | (Yes) | (No) | (Yes) | 10 |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | 32 | (No) | (Yes) | (Yes) |
See also
- The
Number
object it belongs to. Number.MIN_SAFE_INTEGER
Number.MAX_SAFE_INTEGER