Στη JavaScript υπάρχουν δύο διαφορετικά είδη αριθμών: το "number" και το "bigint".
Οι αριθμοί χρησιμοποιούνται περισσότερο και αντιπροσωπεύουν τον αριθμητικό τύπο δεδομένων στη μορφή κινητής υποδιαστολής διπλής ακρίβειας 64 bit.
number: ένας αριθμητικός τύπος δεδομένων στη μορφή κινητής υποδιαστολής διπλής ακρίβειας 64 bit (IEEE 754).
Παραδείγματα είναι τα -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0 και 500000.bigint: ένας αριθμητικός τύπος δεδομένων που μπορεί να αναπαραστήσει ακέραιους σε μορφή αυθαίρετης ακρίβειας.
Παραδείγματα είναι τα -12n, 0n, 4n και 9007199254740991n.let numericValue = 42;
// => 42
Ένα literal αριθμού όπως το 42 στον κώδικα JavaScript είναι τιμή κινητής υποδιαστολής, όχι ακέραιος.
Δεν υπάρχει ξεχωριστός τύπος ακέραιου στη συνηθισμένη καθημερινή χρήση.
Ο τύπος bigint δεν είναι σχεδιασμένος να αντικαταστήσει τον τύπο number για καθημερινές χρήσεις.
Το 42 εξακολουθεί να είναι Number, όχι BigInt.
Οι αριθμοί μπορούν επίσης να εκφραστούν με μορφές literal όπως 0b101, 0o13, 0x0A. Μάθε περισσότερα για τη λεκτική γραμματική των αριθμών εδώ.
Ο συμβολισμός E υποδεικνύει έναν αριθμό που πρέπει να πολλαπλασιαστεί με το 10 υψωμένο σε μια δεδομένη δύναμη.
Η μορφή του συμβολισμού E είναι να έχει έναν αριθμό, ακολουθούμενο από e ή E και μετά από τη δύναμη του 10 με την οποία θα πολλαπλασιαστεί.
const num = 3.125e7;
// => 31250000
// The notation essentially says, "Take 3.125 and multiply it by 10^7".
Ο συμβολισμός E μπορεί επίσης να χρησιμοποιηθεί για την αναπαράσταση πολύ μικρών αριθμών:
const num = 325987e-6; // Equals 0.325987
// The notation essentially says, "Take 325987 and multiply it by 10^-6.
Οι κάτω παύλες μπορούν να χρησιμοποιηθούν για να κάνουν τους μεγάλους αριθμούς πιο ευανάγνωστους για τον χρήστη. Ο μεταγλωττιστής θα αγνοήσει εντελώς τις κάτω παύλες.
const num = 1_000_000; // You can read this as 1,000,000
console.log(num);
// => 1000000
Υπάρχουν δύο ενσωματωμένα αντικείμενα που είναι χρήσιμα όταν έχεις να κάνεις με αριθμούς:
Number: στατικές ιδιότητες για κοινές / χρήσιμες τιμές, στατικές μέθοδοι για έλεγχο τύπων και μετατροπή τύπων, μέθοδοι στιγμιοτύπων για μετατροπή τύπων και μορφοποίηση αριθμών ως συμβολοσειρές.Math: ιδιότητες και μέθοδοι για μαθηματικές σταθερές και συναρτήσεις, δεν λειτουργεί με BigInt.Το Math περιλαμβάνει επίσης μεθόδους για τη στρογγυλοποίηση αριθμών.
Μπορείς να διαβάσεις περισσότερα για τις διαθέσιμες επιλογές στρογγυλοποίησης σε αυτό το άρθρο του javascript.info για τη στρογγυλοποίηση.
Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235
Το ενσωματωμένο καθολικό object Number είναι επίσης μια καθολική function που μπορεί να χρησιμοποιηθεί για να μετατρέψει σχεδόν τα πάντα που μοιάζουν με αριθμό σε number.
Είναι λιγότερο επιεικές από την ανάλυση μιας string σε number.
const date = new Date('December 17, 1995 03:24:00');
const unix = Number(date);
unix;
// => 819199440000
Υπάρχουν τρεις τύποι μέγιστων (και ελάχιστων / μέγιστων αρνητικών) τιμών για τους αριθμούς στη JavaScript:
VALUE: δίνεται από τα Number.MAX_VALUE και Number.MIN_VALUE
INFINITY: δίνεται από τα Number.POSITIVE_INFINITY και Number.NEGATIVE_INFINITY
SAFE_INTEGER: δίνεται από τα Number.MAX_SAFE_INTEGER και Number.MIN_SAFE_INTEGER
Εξαιτίας του τρόπου με τον οποίο υλοποιούνται οι αριθμοί στη JavaScript, δεν μπορεί να αναπαρασταθεί κάθε αριθμός μεταξύ Number.MIN_VALUE και Number.MAX_VALUE.
Ωστόσο, κάθε αριθμός μεταξύ Number.MIN_SAFE_INTEGER - 1 και Number.MAX_SAFE_INTEGER + 1 μπορεί να αναπαρασταθεί.
Η JavaScript έχει αρκετές ειδικές τιμές αριθμών:
NaN και Infinity.+0 και -0.Η τιμή σφάλματος NaN (γνωστή και ως "Not a Number") παράγεται στις ακόλουθες περιπτώσεις.
Number('123'); // => 123
Number('Hello, World!'); // => NaN
Math.sqrt(-64); // => NaN
NaN + 69; // => NaN
Το NaN είναι η μόνη τιμή που δεν είναι ίση με τον εαυτό της:
NaN === NaN; // => false
Αν θέλεις να ελέγξεις αν μια τιμή είναι NaN, πρέπει να χρησιμοποιήσεις την καθολική συνάρτηση isNaN():
isNaN(NaN); // => true
isNaN(123); // => false
Το Infinity είναι μια τιμή σφάλματος που υποδεικνύει ένα από δύο προβλήματα:
Math.pow(2, 1024); // => Infinity
6 / 0; // => Infinity
-6 / 0; // => -Infinity
Το Infinity είναι μεγαλύτερο από κάθε άλλον αριθμό (εκτός από το NaN).
Παρόμοια, το -Infinity είναι μικρότερο από κάθε άλλον αριθμό (εκτός από το NaN).
Η καθολική συνάρτηση isFinite() σου επιτρέπει να ελέγξεις αν μια τιμή είναι πραγματικός αριθμός (ούτε άπειρος ούτε NaN):
isFinite(80085); // => true
isFinite(Infinity); // => false
isFinite(NaN); // => false
Το +0 και το -0 είναι διακριτοί αριθμοί στη JavaScript. Μπορούν να προκύψουν αν αναπαραστήσεις έναν αριθμό τόσο μικρό που είναι δυσδιάκριτος από το 0.
Το μηδέν με πρόσημο σου επιτρέπει να καταγράψεις "από ποια κατεύθυνση" πλησίασες το μηδέν, δηλαδή τι πρόσημο είχε ο αριθμός πριν θεωρηθεί μηδέν.
Καλή πρακτική είναι να προσποιείσαι ότι υπάρχει μόνο ένα μηδέν.
Οι αριθμοί θεωρούνται ίσοι αν έχουν την ίδια τιμή.
1 == 1.0;
// => true
1 === 1.0;
// => true
// Remember, all numbers are floating-points, so this is
// different syntax for the exact same value.
1 === 1n;
// => false
// Strictly checking a number against a bigint will always result
// in false.
Δες τη σύγκριση για περισσότερες πληροφορίες σχετικά με τις συγκρίσεις γενικά και τη σύγκριση αριθμητικών τιμών στη JavaScript.
Επειδή οι αριθμοί στη JavaScript είναι αριθμοί κινητής υποδιαστολής, όλα τα μαθηματικά που χρησιμοποιούν αυτές τις τιμές είναι μαθηματικά κινητής υποδιαστολής. Επομένως, στη JavaScript:
0.1 + 0.2 === 0.3;
// => false
Δες το 0.30000000000000004.com για μια σύντομη εξήγηση και το Παράρτημα Δ του Οδηγού Αριθμητικών Υπολογισμών της Oracle "What Every Computer Scientist Should Know About Floating-Point Arithmetic" για μια εις βάθος εξήγηση.