BigInt JavaScript
- Page précédente Numéros JS
- Page suivante Méthodes numériques JS
Les variables BigInt JavaScript sont utilisées pour stocker des valeurs d'entiers trop grandes pour être représentées par des nombres JavaScript ordinaires.
Précision des entiers JavaScript
Les entiers JavaScript peuvent être précis au maximum jusqu'à 15 chiffres :
Précision des entiers
let x = 999999999999999; let y = 9999999999999999;
Dans JavaScript, tous les nombres sont stockés sous forme de format de point flottant de 64 bits (norme IEEE 754).
Selon ce critère, les grands entiers ne peuvent pas être représentés avec précision et sont arrondis.
Par conséquent, JavaScript ne peut représenter précisément les entiers dans la plage suivante :
- le plus grand est 9007199254740991(253-1)
- le plus petit est -9007199254740991(-(253-1))
Les valeurs entières hors de cette gamme perdront leur précision.
Comment créer un BigInt
Pour créer un BigInt, vous pouvez ajouter n
ou appeler BigInt()
Fonction :
Exemple 1
let x = 9999999999999999; let y = 9999999999999999n;
Exemple 2
let x = 1234567890123456789012345n; let y = BigInt(1234567890123456789012345);
BigInt : un nouveau type de données JavaScript
Le type JavaScript de BigInt est "bigint
:
Exemple
let x = BigInt(999999999999999); let type = typeof x;
BigInt est le deuxième type de données numériques dans JavaScript (après Number).
Pour BigInt, le nombre total de types de données pris en charge par JavaScript est de 8 :
- String
- Number
- Bigint
- Boolean
- Undefined
- Null
- Symbol
- Object
Opérateurs BigInt
Les opérateurs utilisables pour Number JavaScript peuvent également être utilisés pour BigInt.
Exemple de multiplication BigInt
let x = 9007199254740995n; let y = 9007199254740995n; let z = x * y;
Remarque
Il n'est pas autorisé de réaliser des opérations arithmétiques (conversion de type) entre BigInt et Number (l'information peut être perdue lors de la conversion).
BigInt ne peut pas effectuer l'opération de déplacement de bits à droite sans signe (>>>), car il n'a pas de largeur fixe.
Décimales de BigInt
BigInt ne peut pas avoir de décimales.
Exemple de division BigInt
let x = 5n; let y = x / 2; // Erreur : Ne pas mélanger BigInt et autres types, utiliser la conversion explicite.
let x = 5n; let y = Number(x) / 2;
Hexadécimal, octal et binaire de BigInt
BigInt peut également être écrit sous forme hexadécimale, octale ou binaire :
Instance hexadécimale de BigInt
let hex = 0x20000000000003n; let oct = 0o400000000000000003n; let bin = 0b100000000000000000000000000000000000000000000000000011n;
Curiosité sur la précision
L'arrondi peut compromettre la sécurité du programme :
Instance de MAX_SAFE_INTEGER
9007199254740992 === 9007199254740993; // C'est vrai !!!
Prise en charge du navigateur
Depuis septembre 2020, tous les navigateurs prennent en charge BigInt :
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
Mai 2018 | Janvier 2020 | Juillet 2019 | Septembre 2020 | Juin 2018 |
Minimum et maximum des entiers sécurisés
ES6 ajoute également les propriétés max et min à l'objet Number :
MAX_SAFE_INTEGER
MIN_SAFE_INTEGER
Instance de MAX_SAFE_INTEGER
let x = Number.MAX_SAFE_INTEGER;
Instance de MIN_SAFE_INTEGER
let x = Number.MIN_SAFE_INTEGER;
Nouvelles méthodes numériques
ES6 ajoute également deux nouvelles méthodes à l'objet Number :
Number.isInteger()
Number.isSafeInteger()
Méthode Number.isInteger()
Si le paramètre est un entier, la méthode Number.isInteger() retourne true
.
Exemple de isInteger()
Number.isInteger(10); Number.isInteger(10.5);
Méthode Number.isSafeInteger()
Les entiers sécurisés sont des entiers qui peuvent être représentés avec précision comme des nombres à double précision.
Si le paramètre est un entier sécurisé, la méthode Number.isSafeInteger() retourne true
.
Exemple de isSafeInteger()
Number.isSafeInteger(10); Number.isSafeInteger(12345678901234567890);
Les entiers sécurisés sont ceux de -(253 de -1) à +253 Tous les entiers de -1) .
Ceci est un entier sécurisé : 9007199254740991. Ce n'est pas un entier sécurisé : 9007199254740992.
- Page précédente Numéros JS
- Page suivante Méthodes numériques JS