Number.isSafeInteger()

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.

La méthode Number.isSafeInteger() permet de déterminer si la valeur, passée en argument, est un entier représentable correctement en JavaScript (c'est-à-dire un nombre compris entre -(2^53-1) et 2^53-1).

Exemple interactif

function warn(x) {
  if (Number.isSafeInteger(x)) {
    return "Precision safe.";
  }
  return "Precision may be lost!";
}

console.log(warn(Math.pow(2, 53)));
// Expected output: "Precision may be lost!"

console.log(warn(Math.pow(2, 53) - 1));
// Expected output: "Precision safe."

Note : Pour représenter des entiers qui ne sont pas compris dans cet intervalle, on pourra utiliser le type BigInt.

Syntaxe

js
Number.isSafeInteger(valeurÀTester);

Paramètres

valeurÀTester

La valeur dont on souhaite savoir si elle représente un entier représentable correctement en une valeur non signée sur 32 bits. (JavaScript utilise les nombres au format de virgule flottante à double précision comme spécifié dans IEEE 754 et ne peut représenter avec certitude un entier qu'entre -(2^53-1) et 2^53-1 (c'est-à-dire ± 9007199254740991).

Valeur de retour

Un booléen qui indique si la valeur fournie en argument est un entier représentable correctement en JavaScript.

Description

Un entier correctement représentable en JavaScript :

  • peut exactement être représenté avec un nombre à précision double selon IEEE-754
  • la réprésentation IEEE-754 du nombre ne permet pas de l'arrondir à un autre entier pouvant être représenté avec le format décrit par IEEE-754.

Ainsi, par exemple, 2^53 - 1 peut être représenté correctement, aucun autre entier ne peut être arrondi en cette valeur selon IEEE-754. En revanche, 2^53 ne peut pas être représenté correctement car 2^53 + 1 sera arrondi en 2^53 selon les règles IEEE-754 (arrondi à l'entier le plus proche).

L'intervalle des entiers qui peuvent être correctement représentés est [-(2^53 - 1),2^53 - 1 ].

Exemples

js
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

Spécifications

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

Compatibilité des navigateurs

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
isSafeInteger

Legend

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

Full support
Full support

Voir aussi