JavaScript BigInt
- Vorige pagina JS-getallen
- Volgende pagina JS-getalmethoden
JavaScript BigInt variables are used to store large integer values that are too large to be represented by ordinary JavaScript numbers.
JavaScript integer precision
JavaScript integers can only be precise up to 15 digits:
Integer precision
let x = 999999999999999; let y = 9999999999999999;
In JavaScript, all numbers are stored in 64-bit floating-point format (IEEE 754 standard).
According to this standard, large integers cannot be represented accurately and will be rounded.
Therefore, JavaScript can only safely represent integers within the following range:
- Maximum is 9007199254740991(253-1) )
- Minimum is -9007199254740991(- (253-1) )
Integer values outside this range will lose precision.
How to create BigInt
To create BigInt, you can add n
, or call BigInt()
Function:
Example 1
let x = 9999999999999999; let y = 9999999999999999n;
Example 2
let x = 1234567890123456789012345n; let y = BigInt(1234567890123456789012345);
BigInt: a new JavaScript data type
The JavaScript type of BigInt is "bigint
:
Example
let x = BigInt(999999999999999); let type = typeof x;
BigInt is the second numeric data type in JavaScript (after Number).
For BigInt, JavaScript supports a total of 8 data types:
- String
- Number
- Bigint
- Boolean
- Undefined
- Null
- Symbol
- Object
BigInt operators
Operators that can be used with JavaScript Number can also be used with BigInt.
BigInt multiplication example
let x = 9007199254740995n; let y = 9007199254740995n; let z = x * y;
Let op
Het is niet toegestaan om wiskundige operaties uit te voeren tussen BigInt en Number (de typeconversie verliest informatie).
BigInt kan geen unsigned right shift operatie (>>>), omdat het geen vaste breedte heeft.
BigInt decimale waarden
BigInt kan geen decimale waarden hebben.
BigInt delingsvoorbeeld
let x = 5n; let y = x / 2; // Fout: Kan geen BigInt en andere typen mengen, gebruik expliciete conversie.
let x = 5n; let y = Number(x) / 2;
BigInt hexadecimaal, octaal en binair
BigInt kan ook worden geschreven in hexadecimale, octale of binare notatie:
BigInt hexadecimaal voorbeeld
let hex = 0x20000000000003n; let oct = 0o400000000000000003n; let bin = 0b100000000000000000000000000000000000000000000000000011n;
Precision Curiosity
Rondingen kunnen de beveiliging van het programma in gevaar brengen:
MAX_SAFE_INTEGER voorbeeld
9007199254740992 === 9007199254740993; // true !!!
Browserondersteuning
Sinds september 2020 ondersteunen alle browsers BigInt:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
Mei 2018 | Januari 2020 | Juli 2019 | September 2020 | Juni 2018 |
Minimale en maximale veilige integers
ES6 heeft ook de max en min eigenschappen toegevoegd aan het Number-object:
MAX_SAFE_INTEGER
MIN_SAFE_INTEGER
MAX_SAFE_INTEGER voorbeeld
let x = Number.MAX_SAFE_INTEGER;
MIN_SAFE_INTEGER voorbeeld
let x = Number.MIN_SAFE_INTEGER;
Nieuwe numerieke methoden
ES6 heeft ook twee nieuwe methoden toegevoegd aan het Number-object:
Number.isInteger()
Number.isSafeInteger()
Methode Number.isInteger()
Als het argument een geheeltal is, retourneert de methode Number.isInteger() true
.
isInteger() voorbeeld
Number.isInteger(10); Number.isInteger(10.5);
Methode Number.isSafeInteger()
Veilige gehele getallen zijn gehele getallen die exact kunnen worden weergegeven als een dubbele precisie-getal.
Als het argument een veilig geheeltal is, retourneert de methode Number.isSafeInteger() true
.
isSafeInteger() voorbeeld
Number.isSafeInteger(10); Number.isSafeInteger(12345678901234567890);
Veilige gehele getallen zijn gehele getallen van -(253 - 1) tot +(253 - 1) van alle gehele getallen.
Dit is een veiligheidsgetal: 9007199254740991. Dit is geen veiligheidsgetal: 9007199254740992.
- Vorige pagina JS-getallen
- Volgende pagina JS-getalmethoden