BigInt στο JavaScript
- Προηγούμενη σελίδα Αριθμητικοί του JS
- Επόμενη σελίδα Μέθοδοι αριθμητικών του JS
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;
Λήψη υπόψη
Δεν επιτρέπεται η αριθμητική πράξη μεταξύ BigInt και Number (η μετατροπή τύπου θα χάσει πληροφορίες).
Το BigInt δεν μπορεί να εκτελέσει τη μετακίνηση στα δεξιά χωρίς να γεμίσει (>>>), επειδή δεν έχει σταθερή πλάτος.
Μηδενικά σημεία του BigInt
Το BigInt δεν μπορεί να έχει μηδενικά σημεία.
Παράδειγμα διαιρέσεως του BigInt
let x = 5n; let y = x / 2; // Error: Cannot mix BigInt and other types, use explicit conversion.
let x = 5n; let y = Number(x) / 2;
Εξαδcimal, οκταδcimal και δυαδικό σύστημα γραφής του BigInt
Το BigInt μπορεί να γραφτεί σε εξαδcimal, οκταδcimal ή δυαδικό σύστημα γραφής:
Παράδειγμα του BigInt σε εξαδcimal
let hex = 0x20000000000003n; let oct = 0o400000000000000003n; let bin = 0b100000000000000000000000000000000000000000000000000011n;
Περιέργεια Πρόσφορης Τελικής Ακρίβειας
Η αναγνώριση μπορεί να απειλήσει την ασφάλεια του προγράμματος:
Παράδειγμα του MAX_SAFE_INTEGER
9007199254740992 === 9007199254740993; // Γίνεται true !!!
Υποστήριξη προγραμμάτων περιήγησης
Από τον Σεπτέμβριο του 2020, όλα τα προγράμματα περιήγησης υποστηρίζουν BigInt:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
Μάιος 2018 | Ιανουάριος 2020 | Ιούλιος 2019 | Σεπτέμβριος 2020 | Ιούνιος 2018 |
Μικρότερος και μεγαλύτερος ασφαλής ακέραιος
ES6 έχει προσθέσει τις ιδιότητες max και min στον τύπο Number:
MAX_SAFE_INTEGER
MIN_SAFE_INTEGER
Παράδειγμα του MAX_SAFE_INTEGER
let x = Number.MAX_SAFE_INTEGER;
Παράδειγμα του MIN_SAFE_INTEGER
let x = Number.MIN_SAFE_INTEGER;
Νέες αριθμητικές μεθόδους
ES6 έχει προσθέσει δύο νέες μεθόδους στον τύπο Number:
Number.isInteger()
Number.isSafeInteger()
Μέθοδος Number.isInteger()
Αν το όρισμα είναι ακέραιος, η μέθοδος Number.isInteger() επιστρέφει true
.
Παράδειγμα isInteger()
Number.isInteger(10); Number.isInteger(10.5);
Μέθοδος Number.isSafeInteger()
Τα ασφαλή ακέραια είναι ακέραιοι που μπορούν να εκφραστούν με ακρίβεια ως διπλή ακρίβεια.
Αν το όρισμα είναι ασφαλές ακέραιο, η μέθοδος Number.isSafeInteger() επιστρέφει true
.
Παράδειγμα isSafeInteger()
Number.isSafeInteger(10); Number.isSafeInteger(12345678901234567890);
Τα ασφαλή ακέραια είναι από -(253 Παράδειγμα - 1) έως +(253 Παράδειγμα - 1) όλων των ακέραιων.
Αυτό είναι ένα ασφαλές ακέραιο: 9007199254740991. Αυτό δεν είναι ένα ασφαλές ακέραιο: 9007199254740992.
- Προηγούμενη σελίδα Αριθμητικοί του JS
- Επόμενη σελίδα Μέθοδοι αριθμητικών του JS