Αρ

Αριθμοί σε JavaScript

20 ασκήσεις

Σχετικά με την έννοια Αριθμοί

Στη 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

Ενσωματωμένο αντικείμενο

Υπάρχουν δύο ενσωματωμένα αντικείμενα που είναι χρήσιμα όταν έχεις να κάνεις με αριθμούς:

Το 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

Η τιμή σφάλματος NaN (γνωστή και ως "Not a Number") παράγεται στις ακόλουθες περιπτώσεις.

  • Ένας αριθμός δεν μπόρεσε να αναλυθεί:
    Number('123'); // => 123
    Number('Hello, World!'); // => NaN
    
  • Μια πράξη απέτυχε:
    Math.sqrt(-64); // => NaN
    
  • Ένα από τα τελούμενα είναι NaN:
    NaN + 69; // => NaN
    

Το NaN είναι η μόνη τιμή που δεν είναι ίση με τον εαυτό της:

NaN === NaN; // => false

Αν θέλεις να ελέγξεις αν μια τιμή είναι NaN, πρέπει να χρησιμοποιήσεις την καθολική συνάρτηση isNaN():

isNaN(NaN); // => true
isNaN(123); // => false

Infinity

Το 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" για μια εις βάθος εξήγηση.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Αριθμοί

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 1 ακόμη άσκηση για να εξασκηθείς στην έννοια Αριθμοί