4.2 Το χαρακτηριστικό BigInt στην JavaScript

Το BigInt είναι ένα νέο χαρακτηριστικό που εισήχθη στη JavaScript για να υποστηρίζει αριθμούς μεγάλου μεγέθους. Οι αριθμοί BigInt μπορούν να χρησιμοποιηθούν για να αναπαραστήσουν ακέραιες τιμές με αυθαίρετο αριθμό ψηφίων, εκτός από τον περιορισμό του μεγέθους της μνήμης του συστήματος.

Για να δημιουργήσετε έναν αριθμό BigInt, προσθέστε τη λέξη-κλειδί n στο τέλος ενός ακέραιου αριθμού ή χρησιμοποιήστε τη συνάρτηση BigInt():

const bigNum1 = 123456789012345678901234567890n;
const bigNum2 = BigInt("987654321098765432109876543210");

console.log(bigNum1); // Εμφανίζει: 123456789012345678901234567890n
console.log(bigNum2); // Εμφανίζει: 987654321098765432109876543210n

Οι αριθμοί BigInt χρησιμοποιούνται κυρίως για αριθμητικές λειτουργίες που απαιτούν υψηλή ακρίβεια και μεγάλο μέγεθος αριθμητικών τιμών. Είναι σημαντικό να σημειωθεί ότι οι αριθμοί BigInt δεν μπορούν να χρησιμοποιηθούν για απλές αριθμητικές λειτουργίες με αριθμούς κανονικού μεγέθους. Για τέτοιες περιπτώσεις, οι κανονικοί αριθμοί JavaScript είναι επαρκείς.

Οι αριθμοί BigInt υποστηρίζουν τις συνήθεις αριθμητικές λειτουργίες, όπως πρόσθεση, αφαίρεση, πολλαπλασιασμό και διαίρεση. Ωστόσο, πρέπει να λαμβάνετε υπόψη ότι οι αριθμοί BigInt δεν μπορούν να συμμετέχουν σε αριθμητικές λειτουργίες με κανονικούς αριθμούς. Για να πραγματοποιήσετε αριθμητικές λειτουργίες μεταξύ αριθμών BigInt και κανονικών αριθμών, πρέπει να μετατρέψετε τον έναν τύπο στον άλλον.

Στην JavaScript, οι ακέραιοι αριθμοί ακριβείας είναι ακριβείς μέχρι τα 15 ψηφία. Αυτό σημαίνει ότι μπορείτε να αναπαραστήσετε και να χειριστείτε ακέραιες τιμές με ακρίβεια μέχρι τον αριθμό 9,007,199,254,740,991.

Για παράδειγμα, ο ακέραιος αριθμός 123456789012345 θα είναι ακριβής, ενώ ο ακέραιος αριθμός 1234567890123456 θα υπερβεί την ακρίβεια και θα είναι αναπαραστατός με περισσότερα από 15 ψηφία.

Εάν χρειάζεστε μεγαλύτερη ακρίβεια για ακέραιους αριθμούς μεγαλύτερους από 15 ψηφία, μπορείτε να χρησιμοποιήσετε το χαρακτηριστικό BigInt που προστέθηκε στην JavaScript. Οι αριθμοί BigInt είναι ακέραιοι με αυθαίρετο αριθμό ψηφίων και μπορούν να αναπαρασταθούν με μεγάλη ακρίβεια.

[adinserter block=”2″]

Για να δημιουργήσετε ένα BigInt, προσθέστε το n στο τέλος ενός ακεραίου αριθμού ή χρησιμοποιήστε τη συνάρτηση BigInt().

Εδώ είναι ένα παράδειγμα:

const bigNum = 123456789012345678901234567890n;
console.log(bigNum); // Εμφανίζει: 123456789012345678901234567890n

Στο παράδειγμα αυτό, ο ακέραιος αριθμός 123456789012345678901234567890 αντιμετωπίζεται ως BigInt καθώς έχει προστεθεί το n στο τέλος του. Αυτό δείχνει ότι ο αριθμός είναι τύπου BigInt.

Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση BigInt() για να δημιουργήσετε ένα BigInt από ένα αλφαριθμητικό:

const bigNum = BigInt("987654321098765432109876543210");
console.log(bigNum); // Εμφανίζει: 987654321098765432109876543210n

Στο παράδειγμα αυτό, το αλφαριθμητικό “987654321098765432109876543210” μετατρέπεται σε BigInt μέσω της συνάρτησης BigInt().

Στην JavaScript, ο τύπος δεδομένων του BigInt είναι “bigint”. Μπορείτε να χρησιμοποιήσετε τον τελεστή typeof για να ελέγξετε τον τύπο μιας μεταβλητής που περιέχει ένα BigInt.

Εδώ είναι ένα παράδειγμα:

const bigNum = 123456789012345678901234567890n;
console.log(typeof bigNum); // Εμφανίζει: "bigint"

Το παράδειγμα δείχνει ότι η μεταβλητή bigNum που περιέχει ένα BigInt έχει τον τύπο δεδομένων “bigint”. Αυτό σας επιτρέπει να αναγνωρίζετε τη χρήση και την επεξεργασία αριθμών BigInt στο πρόγραμμά σας.

Οι τελεστές που μπορούν να χρησιμοποιηθούν σε έναν αριθμό JavaScript μπορούν επίσης να χρησιμοποιηθούν σε ένα BigInt. Οι αριθμητικοί τελεστές που είναι διαθέσιμοι για το BigInt περιλαμβάνουν την πρόσθεση (+), την αφαίρεση (-), τον πολλαπλασιασμό (*) και τη διαίρεση (/).

Εδώ είναι ένα παράδειγμα χρήσης αριθμητικών τελεστών με BigInt:

const bigNum1 = 123456789012345678901234567890n;
const bigNum2 = 987654321098765432109876543210n;

const sum = bigNum1 + bigNum2;
console.log(sum); // Εμφανίζει: 1111111111111111111111111111100n

const difference = bigNum2 - bigNum1;
console.log(difference); // Εμφανίζει: 864197532086419753208641975320n

const product = bigNum1 * bigNum2;
console.log(product); // Εμφανίζει: 12193263113702179506089013136698145990502927512345678900n

const quotient = bigNum2 / bigNum1;
console.log(quotient); // Εμφανίζει: 8000000000n

Στο παράδειγμα αυτό, πραγματοποιούνται αριθμητικές λειτουργίες μεταξύ δύο αριθμών BigInt bigNum1 και bigNum2. Οι αριθμητικοί τελεστές προσθέτουν, αφαιρούν, πολλαπλασιάζουν και διαιρούν τους αριθμούς BigInt για να υπολογίσουν το αποτέλεσμα. Οι αριθμητικές τιμές που παράγονται είναι επίσης BigInt.

Πρέπει να σημειωθεί ότι οι αριθμητικοί τελεστές BigInt δεν μπορούν να χρησιμοποιηθούν μεταξύ ενός αριθμού BigInt και ενός αριθμού κανονικού μεγέθους. Αν χρειάζεστε αριθμητικές λειτουργίες μεταξύ αριθμών BigInt και αριθμών κανονικού μεγέθους, θα πρέπει να μετατρέψετε τον έναν τύπο στον άλλον.

Ένα BigInt δεν μπορεί να έχει δεκαδικά ψηφία. Οι αριθμοί BigInt χρησιμοποιούνται για την αναπαράσταση ακέραιων αριθμών με μεγάλα μεγέθη που υπερβαίνουν το μέγιστο ακέραιο που μπορεί να αναπαρασταθεί με τους κανονικούς αριθμούς της JavaScript.

Εάν χρειάζεστε αριθμούς με δεκαδικά ψηφία και μεγάλη ακρίβεια, μπορείτε να χρησιμοποιήσετε το αντικείμενο BigNumber από βιβλιοθήκες όπως η BigNumber.js. Η BigNumber.js είναι μια εξωτερική βιβλιοθήκη που παρέχει υψηλή ακρίβεια για αριθμητικές πράξεις με μεγάλα και δεκαδικά αριθμητικά δεδομένα στην JavaScript. Μπορείτε να εγκαταστήσετε την βιβλιοθήκη μέσω του npm και να τη χρησιμοποιήσετε στον κώδικά σας για να εκτελέσετε αριθμητικές πράξεις με μεγάλη ακρίβεια και υποστήριξη για δεκαδικά ψηφία.

[adinserter block=”3″]

Τα αντικείμενα BigInt μπορούν επίσης να γραφούν σε δεκαεξαδική (hexadecimal), οκταδική (octal) ή δυαδική (binary) σημασία. Για να γράψετε ένα BigInt με ένα από αυτά τα συστήματα, μπορείτε να χρησιμοποιήσετε τα προθέματα που ταιριάζουν με το κάθε σύστημα.

Εδώ είναι ένα παράδειγμα για κάθε σύστημα:

Δεκαεξαδική (Hexadecimal):

const hexNum = 0xA1B2C3D4E5F6n;
console.log(hexNum); // Εμφανίζει: 101314151617241012n

Οκταδική (Octal):

const octNum = 0o755n;
console.log(octNum); // Εμφανίζει: 493n

Δυαδική (Binary):

const binaryNum = 0b10101010n;
console.log(binaryNum); // Εμφανίζει: 170n

Στα παραπάνω παραδείγματα, οι αριθμοί BigInt αναπαρίστανται σε διάφορα συστήματα. Ο αριθμός με το πρόθεμα 0x είναι δεκαεξαδικός, με το πρόθεμα 0o είναι οκταδικός και με το πρόθεμα 0b είναι δυαδικός. Αυτό σας επιτρέπει να γράφετε αριθμούς BigInt σε διάφορα συστήματα, ανάλογα με τις απαιτήσεις του προγράμματος.

Το ES6 πρόσθεσε τις ιδιότητες MAX_SAFE_INTEGER και MIN_SAFE_INTEGER στο αντικείμενο Number.

Το MAX_SAFE_INTEGER είναι η μεγαλύτερη ακέραιη τιμή που μπορεί να αναπαρασταθεί με ασφάλεια στην JavaScript. Η τιμή του είναι 9007199254740991. Αυτό σημαίνει ότι οποιαδήποτε ακέραια τιμή μεγαλύτερη από αυτή θα υπερβεί το όριο και δεν θα είναι ασφαλής.

Το MIN_SAFE_INTEGER είναι η μικρότερη ακέραια τιμή που μπορεί να αναπαρασταθεί με ασφάλεια στην JavaScript. Η τιμή του είναι -9007199254740991. Οποιαδήποτε ακέραια τιμή μικρότερη από αυτή θα υπερβεί το όριο και δεν θα είναι ασφαλής.

Αυτές οι ιδιότητες είναι χρήσιμες όταν χρειάζεστε να ελέγξετε αν μια ακέραια τιμή είναι εντός των ασφαλών ορίων που μπορούν να αναπαρασταθούν με ασφάλεια στην JavaScript. Μπορείτε να χρησιμοποιήσετε τις ιδιότητες Number.MAX_SAFE_INTEGER και Number.MIN_SAFE_INTEGER για να αναφερθείτε σε αυτές τις τιμές στον κώδικά σας.

Εδώ είναι ένα παράδειγμα εκτύπωσης των τιμών MAX_SAFE_INTEGER και MIN_SAFE_INTEGER:

console.log(Number.MAX_SAFE_INTEGER); // Εκτυπώνει: 9007199254740991
console.log(Number.MIN_SAFE_INTEGER); // Εκτυπώνει: -9007199254740991

Στο παραπάνω παράδειγμα, χρησιμοποιούμε την console.log() για να εκτυπώσουμε τις τιμές των MAX_SAFE_INTEGER και MIN_SAFE_INTEGER. Απλά καλούμε τις ιδιότητες Number.MAX_SAFE_INTEGER και Number.MIN_SAFE_INTEGER για να αναφερθούμε στις τιμές αυτές και να τις εκτυπώσουμε στην κονσόλα.

Η μέθοδος Number.isInteger() επιστρέφει true εάν το όρισμα που δίνεται είναι ένας ακέραιος αριθμός. Αντίθετα, επιστρέφει false εάν το όρισμα δεν είναι ακέραιος.

Εδώ είναι ένα παράδειγμα χρήσης της μεθόδου Number.isInteger():

console.log(Number.isInteger(5)); // Εκτυπώνει: true
console.log(Number.isInteger(3.14)); // Εκτυπώνει: false
console.log(Number.isInteger(-10)); // Εκτυπώνει: true
console.log(Number.isInteger("10")); // Εκτυπώνει: false

Στο παραπάνω παράδειγμα, χρησιμοποιούμε την Number.isInteger() για να ελέγξουμε εάν οι τιμές είναι ακέραιοι αριθμοί. Η μέθοδος επιστρέφει true για τους ακέραιους αριθμούς (5 και -10) και false για τις μη ακέραιες τιμές (3.14 και "10").

Η μέθοδος Number.isSafeInteger() χρησιμοποιείται για να ελέγξει αν ένας αριθμός είναι ένας “ασφαλής” ακέραιος. Ένας “ασφαλής” ακέραιος είναι ένας ακέραιος που μπορεί να αναπαρασταθεί ακριβώς ως ένας αριθμός διπλής ακρίβειας.

Εδώ είναι ένα παράδειγμα χρήσης της μεθόδου Number.isSafeInteger():

console.log(Number.isSafeInteger(9007199254740991)); // Εκτυπώνει: true
console.log(Number.isSafeInteger(9007199254740992)); // Εκτυπώνει: false
console.log(Number.isSafeInteger(-9007199254740991)); // Εκτυπώνει: true
console.log(Number.isSafeInteger(3.14)); // Εκτυπώνει: false

Στο παραπάνω παράδειγμα, χρησιμοποιούμε την Number.isSafeInteger() για να ελέγξουμε εάν οι τιμές είναι ασφαλείς ακέραιοι. Η μέθοδος επιστρέφει true για τους ασφαλείς ακέραιους (9007199254740991 και -9007199254740991) και false για τις μη ασφαλείς τιμές (9007199254740992 και 3.14).

21 Αυγούστου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων