Στη JavaScript, οι αριθμοί αντιπροσωπεύονται από τον τύπο δεδομένων “Number” και μπορούν να περιέχουν αριθμητικές τιμές.

Μπορείτε να δηλώσετε έναν αριθμό στη JavaScript με ή χωρίς δεκαδικά ψηφία. Ένας αριθμός χωρίς δεκαδικά ψηφία ονομάζεται “ακέραιος”, ενώ ένας αριθμός με δεκαδικά ψηφία ονομάζεται “δεκαδικός αριθμός” ή “πλεονασματικός αριθμός”.

Εδώ είναι μερικά παραδείγματα δηλώσεων αριθμών στη JavaScript:

var integerNumber = 10;
var decimalNumber = 3.14;

Στο παράδειγμα παραπάνω, η μεταβλητή “integerNumber” δηλώνει έναν ακέραιο αριθμό με την τιμή 10, ενώ η μεταβλητή “decimalNumber” δηλώνει έναν δεκαδικό αριθμό με την τιμή 3.14.

Η JavaScript υποστηρίζει επίσης την επιστημονική εκθετική σημείωση για την αναπαράσταση πολύ μεγάλων ή πολύ μικρών αριθμών. Για παράδειγμα:

var scientificNumber = 1.23e6; // 1.23 x 10^6 = 1230000

Στο παράδειγμα παραπάνω, ο αριθμός 1.23e6 αναπαριστά τον αριθμό 1.23 πολλαπλασιασμένο με το 10^6, που είναι ίσο με 1230000.

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

Σωστά! Στη JavaScript, οι αριθμοί αντιπροσωπεύονται πάντα ως δεκαδικά αριθμητικά κινητής υποδιαστολής 64-bit, σύμφωνα με το διεθνές πρότυπο IEEE 754.

Αυτό σημαίνει ότι όλοι οι αριθμοί στη JavaScript αποθηκεύονται ως διπλής ακρίβειας (double precision) κινητά σημεία, ακολουθώντας τη δομή που περιγράφεται από το πρότυπο IEEE 754. Στην αναπαράσταση αυτή, τα bits 0 έως 51 αποθηκεύουν τον αριθμό (το κλάσμα), τα bits 52 έως 62 αποθηκεύουν τον εκθέτη, και το bit 63 αποθηκεύει το πρόσημο.

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

Είναι σημαντικό να γνωρίζετε αυτές τις λεπτομέρειες κατά την εκτέλεση αριθμητικών υπολογισμών και τη διαχείριση αριθμητικών τιμών στη JavaScript.

Στη JavaScript, οι ακέραιοι αριθμοί (χωρίς δεκαδική τελεία ή σημείωση εκθέτη) είναι ακριβείς μέχρι 15 ψηφία.

Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε ακέραιους αριθμούς με ακρίβεια έως και 15 ψηφία. Όταν υπερβαίνετε αυτό το όριο, οι ακέραιοι αριθμοί μπορεί να μην αναπαρίστανται με ακρίβεια και να προκαλούνται ανεπιθύμητα αποτελέσματα σε αριθμητικές λειτουργίες.

[adinserter block=”2″]

Εδώ είναι ένα παράδειγμα που δείχνει την ακρίβεια των ακεραίων αριθμών στη JavaScript:

var largeInteger = 1234567890123456;
console.log(largeInteger); // Εμφανίζει: 1234567890123456

var tooLargeInteger = 12345678901234567;
console.log(tooLargeInteger); // Εμφανίζει: 12345678901234568 (ανεπιθύμητο αποτέλεσμα)

Στο παράδειγμα παραπάνω, ο ακέραιος αριθμός largeInteger έχει μια τιμή που είναι ακριβής μέχρι τα 15 ψηφία, ενώ ο ακέραιος αριθμός tooLargeInteger υπερβαίνει το όριο των 15 ψηφίων και δεν αναπαρίσταται με ακρίβεια. Αναπαριστάται ως 12345678901234568, εμφανίζοντας ένα ανεπιθύμητο αποτέλεσμα.

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

Στη JavaScript, οι αριθμοί κινητής υποδιαστολής (floating-point numbers) αποθηκεύονται ως διπλής ακρίβειας (double precision), ακολουθώντας το πρότυπο IEEE 754.

Οι αριθμοί κινητής υποδιαστολής στη JavaScript δεν είναι πάντα ακριβείς. Υπάρχει μια περιορισμένη ακρίβεια λόγω της πεπερασμένης αναπαράστασης τους σε δυαδική μορφή.

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

var preciseNumber = 0.1 + 0.2;
console.log(preciseNumber); // Εμφανίζει: 0.30000000000000004 (ανεπιθύμητο αποτέλεσμα)

Στο παράδειγμα παραπάνω, το αποτέλεσμα της πράξης 0.1 + 0.2 δεν είναι ακριβώς 0.3, αλλά προσεγγίζεται στο 0.30000000000000004. Αυτό συμβαίνει λόγω της πεπερασμένης ακρίβειας των αριθμών κινητής υποδιαστολής.

Για να αποφύγετε τυχόν προβλήματα με την ακρίβεια των αριθμών κινητής υποδιαστολής, μπορείτε να χρησιμοποιήσετε μεθόδους όπως το toFixed() για να περιορίσετε τον αριθμό των δεκαδικών ψηφίων που εμφανίζονται.

var preciseNumber = 0.1 + 0.2;
var roundedNumber = preciseNumber.toFixed(2);
console.log(roundedNumber); // Εμφανίζει: 0.30

Στο παράδειγμα αυτό, η μέθοδος toFixed(2) χρησιμοποιείται για να περιορίσει τον αριθμό στα δύο δεκαδικά ψηφία και να επιστρέψει μια ακριβή προσέγγιση του αποτελέσματος ως string με τη μορφή “0.30”.

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

[adinserter block=”3″]

Στη JavaScript, ο τελεστής + χρησιμοποιείται τόσο για την πρόσθεση όσο και για τη συνένωση (concatenation).

Όταν προσθέτετε δύο αριθμούς με τον τελεστή +, το αποτέλεσμα θα είναι ένας αριθμός:

var num1 = 5;
var num2 = 10;
var sum = num1 + num2;
console.log(sum); // Εμφανίζει: 15

Ωστόσο, όταν προσθέτετε δύο συμβολοσειρές (strings), το αποτέλεσμα θα είναι η συνένωση των δύο συμβολοσειρών:

var str1 = "Hello";
var str2 = "World";
var result = str1 + str2;
console.log(result); // Εμφανίζει: "HelloWorld"

Αν ανακατέψετε αριθμούς και συμβολοσειρές με τον τελεστή +, η συμπεριφορά εξαρτάται από τη σειρά των τελεστέων:

var num = 5;
var str = "10";
var result1 = num + str; // Αριθμός + Συμβολοσειρά = Συνένωση
console.log(result1); // Εμφανίζει: "510"

var result2 = str + num; // Συμβολοσειρά + Αριθμός = Συνένωση
console.log(result2); // Εμφανίζει: "105"

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

Έτσι είναι! Στη JavaScript, οι συμβολοσειρές μπορούν να περιέχουν αριθμητικό περιεχόμενο. Αυτό σημαίνει ότι μπορείτε να αποθηκεύσετε αριθμητικές τιμές σε μεταβλητές τύπου συμβολοσειράς.

Εδώ είναι ένα παράδειγμα που δείχνει τη χρήση αριθμητικών συμβολοσειρών στη JavaScript:

var numString1 = "10";
var numString2 = "5";
var sum = numString1 + numString2;
console.log(sum); // Εμφανίζει: "105" (συνένωση συμβολοσειρών)

var numString3 = "15";
var numString4 = "2";
var product = numString3 * numString4;
console.log(product); // Εμφανίζει: 30 (αριθμητική πράξη)

var numString5 = "20";
var numString6 = "3";
var division = numString5 / numString6;
console.log(division); // Εμφανίζει: 6.666666666666667 (αριθμητική πράξη)

Στο παράδειγμα παραπάνω, οι μεταβλητές numString1, numString2, numString3, numString4, numString5, και numString6 είναι συμβολοσειρές που περιέχουν αριθμητικές τιμές. Μπορούμε να εκτελέσουμε συνένωση συμβολοσειρών μεταξύ τους, αλλά επίσης μπορούμε να εκτελέσουμε αριθμητικές πράξεις με τη χρήση των αριθμητικών τιμών που περιέχονται στις συμβολοσειρές.

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

Στη JavaScript, η λέξη-κλειδί NaN υποδηλώνει ότι ένας αριθμός δεν είναι έγκυρος αριθμός.

Όταν εκτελείτε αριθμητικές πράξεις με μη αριθμητικές συμβολοσειρές, το αποτέλεσμα θα είναι NaN:

var result1 = "Hello" / 5;
console.log(result1); // Εμφανίζει: NaN

var result2 = "20" * "World";
console.log(result2); // Εμφανίζει: NaN

Στο παράδειγμα παραπάνω, και στις δύο περιπτώσεις, προσπαθούμε να εκτελέσουμε αριθμητικές πράξεις με μη αριθμητικές συμβολοσειρές. Το αποτέλεσμα σε αυτές τις περιπτώσεις είναι NaN, δηλαδή μη έγκυρος αριθμός.

[adinserter block=”4″]

Μπορείτε να ελέγξετε αν ένα αποτέλεσμα είναι NaN χρησιμοποιώντας τη συνάρτηση isNaN():

var result = "Hello" / 5;
console.log(isNaN(result)); // Εμφανίζει: true

Η συνάρτηση isNaN() επιστρέφει true εάν το αποτέλεσμα είναι NaN, και false διαφορετικά.

Είναι σημαντικό να ελέγχετε τα αποτελέσματα των αριθμητικών πράξεων για την παρουσία της τιμής NaN, προκειμένου να διαχειριστείτε τυχόν σφάλματα ή μη έγκυρες τιμές με κατάλληλο τρόπο.

Σωστά! Στη JavaScript, η τιμή Infinity (ή -Infinity) χρησιμοποιείται για να υποδηλώσει έναν αριθμό που είναι μεγαλύτερος (ή μικρότερος) από το μεγαλύτερο δυνατό αριθμητικό μέγεθος.

Ένα παράδειγμα χρήσης της τιμής Infinity είναι όταν διαιρείτε έναν αριθμό με το μηδέν:

var result1 = 1 / 0;
console.log(result1); // Εμφανίζει: Infinity

var result2 = -1 / 0;
console.log(result2); // Εμφανίζει: -Infinity

Στο παράδειγμα παραπάνω, η διαίρεση του αριθμού 1 με το μηδέν παράγει την τιμή Infinity, ενώ η διαίρεση του αρνητικού αριθμού -1 με το μηδέν παράγει την τιμή -Infinity.

Μπορείτε να ελέγξετε εάν ένα αποτέλεσμα είναι Infinity χρησιμοποιώντας τη συνάρτηση isFinite():

var result = 1 / 0;
console.log(isFinite(result)); // Εμφανίζει: false

Η συνάρτηση isFinite() επιστρέφει true εάν το αποτέλεσμα δεν είναι Infinity ή -Infinity, και false διαφορετικά.

Είναι σημαντικό να ελέγχετε τα αποτελέσματα των αριθμητικών πράξεων για την παρουσία των τιμών Infinity ή -Infinity, προκειμένου να διαχειριστείτε τυχόν σφάλματα ή μη έγκυρες τιμές με κατάλληλο τρόπο.

Στη JavaScript, αριθμητικές σταθερές που προηγούνται από το πρόθεμα 0x ερμηνεύονται ως δεκαεξαδικοί αριθμοί.

Ένα παράδειγμα χρήσης δεκαεξαδικών αριθμών στη JavaScript είναι το εξής:

var decimal = 10;
var hexadecimal = 0xA;
console.log(decimal); // Εμφανίζει: 10
console.log(hexadecimal); // Εμφανίζει: 10

Στο παράδειγμα παραπάνω, οι μεταβλητές decimal και hexadecimal έχουν τις ίδιες αριθμητικές τιμές, 10. Ωστόσο, η τιμή της hexadecimal έχει προηγηθεί από το πρόθεμα 0x, που υποδηλώνει ότι είναι δεκαεξαδικός αριθμός.

Οι δεκαεξαδικοί αριθμοί χρησιμοποιούν τις ψηφία 0-9 για τις πρώτες δέκα θέσεις και τις γράμματα A-F (ή a-f) για τις επόμενες έξι θέσεις. Για παράδειγμα, ο αριθμός 10 στο δεκαεξαδικό σύστημα αναπαρίσταται από το γράμμα A.

Είναι σημαντικό να σημειώσετε ότι οι δεκαεξαδικοί αριθμοί χρησιμοποιούνται συχνά για αναπαράσταση χρωμάτων στον κώδικα HTML και CSS, καθώς και για άλλες εφαρμογές όπου η δεκαεξαδική αναπαράσταση είναι πρακτική ή απαραίτητη.

Έτσι είναι! Στη JavaScript, οι αριθμοί παρουσιάζονται από προεπιλογή ως δεκαδικά στοιχεία (base 10). Ωστόσο, μπορείτε να χρησιμοποιήσετε τη μέθοδο toString() για να εξάγετε αριθμούς από βάση 2 έως βάση 36.

Εδώ είναι ένα παράδειγμα που δείχνει πώς να εξάγετε έναν αριθμό σε διάφορες βάσεις:

var number = 42;

var binary = number.toString(2);
console.log(binary); // Εμφανίζει: "101010" (βάση 2)

var octal = number.toString(8);
console.log(octal); // Εμφανίζει: "52" (βάση 8)

var hexadecimal = number.toString(16);
console.log(hexadecimal); // Εμφανίζει: "2a" (βάση 16)

Στο παράδειγμα παραπάνω, ο αριθμός 42 εξάγεται σε διάφορες βάσεις με τη χρήση της μεθόδου toString(). Με την παράμετρο που περνάτε στη μέθοδο, μπορείτε να καθορίσετε τη βάση που θέλετε να χρησιμοποιηθεί για την αναπαράσταση του αριθμού. Για παράδειγμα, η βάση 2 αντιπροσωπεύει το δυαδικό σύστημα, η βάση 8 αντιπροσωπεύει το οκταδικό σύστημα και η βάση 16 αντιπροσωπεύει το δεκαεξαδικό σύστημα.

Μπορείτε να χρησιμοποιήσετε τη μέθοδο toString() για να εξάγετε αριθμούς σε οποιαδήποτε βάση από τη βάση 2 έως τη βάση 36. Εάν δεν περάσετε καμία παράμετρο στη μέθοδο toString(), τότε ο αριθμός θα εξαχθεί στην προεπιλεγμένη δεκαδική βάση.

Στην JavaScript, οι αριθμοί συνήθως είναι αρχικές τιμές (primitive values) που δημιουργούνται από αριθμητικά αντίστοιχα (literals) όπως οι ακέραιοι αριθμοί ή οι αριθμοί με κλασματικό μέρος.

[adinserter block=”5″]

Ωστόσο, υπάρχει επίσης η δυνατότητα να δημιουργήσετε αριθμούς ως αντικείμενα JavaScript. Η δημιουργία αριθμών ως αντικειμένων επιτρέπει τη χρήση επιπλέον μεθόδων και ιδιοτήτων που παρέχονται από τον προεπιλεγμένο αντικειμενικό προσανατολισμό της JavaScript.

Για παράδειγμα, μπορείτε να δημιουργήσετε έναν αριθμό ως αντικείμενο χρησιμοποιώντας τον κατασκευαστή Number:

var numberObject = new Number(42);
console.log(numberObject); // Εμφανίζει: [Number: 42]

Στο παράδειγμα παραπάνω, ο αριθμός 42 δημιουργείται ως αντικείμενο Number με τη χρήση του κατασκευαστή Number. Το αντικείμενο Number περιβάλλει την αρχική αριθμική τιμή και παρέχει επιπλέον μεθόδους και ιδιότητες που μπορείτε να χρησιμοποιήσετε για την εκτέλεση διάφορων λειτουργιών σε αριθμούς.

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

Στη JavaScript, ο τελεστής == χρησιμοποιείται για να συγκρίνει δύο τιμές για ισότητα. Όμως, πρέπει να είστε προσεκτικοί με τον τρόπο που χρησιμοποιείται αυτός ο τελεστής, καθώς μπορεί να οδηγήσει σε μη αναμενόμενα αποτελέσματα λόγω των κανόνων αυτόματης μετατροπής τύπων (type coercion) που εφαρμόζει η JavaScript.

Όταν χρησιμοποιείτε τον τελεστή == για να συγκρίνετε δύο τιμές, η JavaScript προσπαθεί να μετατρέψει τις τιμές σε έναν κοινό τύπο πριν τη σύγκριση. Αυτό μπορεί να οδηγήσει σε απρόσμενες μετατροπές τιμών και σε πιθανές απώλειες ακρίβειας.

Για παράδειγμα, όταν συγκρίνετε έναν αριθμό και μια αλφαριθμητική τιμή με τον τελεστή ==, η JavaScript θα προσπαθήσει να μετατρέψει την αλφαριθμητική τιμή σε αριθμό πριν τη σύγκριση. Αυτή η αυτόματη μετατροπή μπορεί να οδηγήσει σε μη αναμενόμενα αποτελέσματα, όπως στην περίπτωση που περιγράψατε:

var x = 42;
var y = "42";

console.log(x == y); // Εμφανίζει: true

Στο παράδειγμα παραπάνω, η αριθμητική τιμή x και η αλφαριθμητική τιμή "42" μετατρέπονται σε αριθμούς (καθώς η αλφαριθμητική τιμή μοιάζει με αριθμό) και συγκρίνονται. Επειδή οι τιμές είναι ίσες μεταξύ τους μετά τη μετατροπή, το αποτέλεσμα είναι true.

Για να αποφύγετε αυτούς τους πιθανούς προβληματισμούς με την αυτόματη μετατροπή τύπων, συνίσταται να χρησιμοποιείτε τον τελεστή === (strict equality) για να συγκρίνετε τιμές σε JavaScript. Ο τελεστής === συγκρίνει τις τιμές και τους τύπους τους, χωρίς να εφαρμόζει αυτόματη μετατροπή τύπων.

Στη JavaScript, ο τελεστής === χρησιμοποιείται για την αυστηρή σύγκριση δύο τιμών. Αν οι τιμές είναι διαφορετικούς τύπους ή έχουν διαφορετική τιμή, τότε η σύγκριση θα επιστρέψει false. Αν οι τιμές είναι του ίδιου τύπου και έχουν την ίδια τιμή, τότε η σύγκριση θα επιστρέψει true.

Στην περίπτωση που περιγράψατε:

var x = 42;
var y = "42";

console.log(x === y); // Εμφανίζει: false

Ο αριθμός x είναι τύπου αριθμός και η αλφαριθμητική τιμή "42" είναι τύπου αλφαριθμητικό. Παρόλο που η αλφαριθμητική τιμή μοιάζει με αριθμό, ο τελεστής === εκτελεί αυστηρή σύγκριση τύπου και τιμής. Επειδή οι τιμές έχουν διαφορετικό τύπο, η σύγκριση επιστρέφει false.

Η χρήση του τελεστή === για την αυστηρή σύγκριση είναι συνήθης πρακτική και συνιστάται για αποφυγή προβλημάτων που μπορεί να προκύψουν από την αυτόματη μετατροπή τύπων που εφαρμόζει ο τελεστής ==.

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