Αριθμοί του JavaScript

GreekScript has only one number type.

Whether or not to include a decimal point when writing numbers is optional.

GreekScript Number

JavaScript numbers can be written with or without a decimal point:

Παράδειγμα

var x = 3.14;    // A number with a decimal point
var y = 3;       // A number without a decimal point

Δοκιμάστε το προσωπικά

Extremely large or small numbers can be written in scientific notation:

Παράδειγμα

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123

Δοκιμάστε το προσωπικά

JavaScript numbers are always 64-bit floating-point numbers

Unlike many other programming languages, JavaScript does not define different types of numbers, such as integers, shorts, longs, floats, etc.

JavaScript numbers are always stored as double-precision floating-point numbers, according to the international IEEE 754 standard.

This format stores numbers with 64 bits, where 0 to 51 store the number (fraction), 52 to 62 store the exponent, and 63 bits store the sign:

Value (also known as Fraction/Mantissa) Exponent Sign
52 bits(0 - 51) 11 bits (52 - 62) 1 bit (63)

Precision

Integers (not using exponent or scientific notation) are precise to 15 digits.

Παράδειγμα

var x = 999999999999999;   // x will be 999999999999999
var y = 9999999999999999;  // y will be 10000000000000000

Δοκιμάστε το προσωπικά

The maximum number of decimal places is 17, but floating-point arithmetic is not always 100% accurate:

Παράδειγμα

var x = 0.2 + 0.1;         // x will be 0.30000000000000004

Δοκιμάστε το προσωπικά

Using multiplication and division can help solve the above problem:

Παράδειγμα

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x will be 0.3

Δοκιμάστε το προσωπικά

Adding a number and a string

Warning!!

JavaScript's addition and concatenation (concatenation) both use the + operator.

Numbers use addition. Strings use concatenation.

If you add two numbers, the result will be a number:

Παράδειγμα

var x = 10;
var y = 20;
var z = x + y;           // z will be 30 (a number)

Δοκιμάστε το προσωπικά

If you add two strings, the result will be a string concatenation:

Παράδειγμα

var x = "10";
var y = "20";
var z = x + y;           // ο z θα είναι 1020 (αλφαριθμητική συμβολοσειρά)

Δοκιμάστε το προσωπικά

If you add a number and a string, the result will also be a string concatenation:

Παράδειγμα

var x = 10;
var y = "20";
var z = x + y;           // z will be 1020 (a string)

Δοκιμάστε το προσωπικά

Αν προσθέσετε έναν αριθμό σε μια αλφαριθμητική συμβολοσειρά, το αποτέλεσμα θα είναι η αλληλουχία της συμβολοσειράς:

Παράδειγμα

var x = "10";
var y = 20;
var z = x + y;           // ο z θα είναι 1020 (αλφαριθμητική συμβολοσειρά)

Δοκιμάστε το προσωπικά

Η συχνή σφάλμα είναι να πιστεύει ότι το αποτέλεσμα θα πρέπει να είναι 30:

Παράδειγμα

var x = 10;
var y = 20;
var z = "The result is: " + x + y;

Δοκιμάστε το προσωπικά

Η συχνή σφάλμα είναι να πιστεύει ότι το αποτέλεσμα θα πρέπει να είναι 102030:

Παράδειγμα

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;

Δοκιμάστε το προσωπικά

Το JavaScript συναρμολογεί από αριστερά προς δεξιά.

Επειδή ο x και ο y είναι αριθμοί, η 10 + 20 θα προστεθεί.

Επειδή ο z είναι αλφαριθμητική συμβολοσειρά, η 30 + "30" γίνεται αλληλουχία.

Αριθμητική συμβολοσειρά

Οι αλφαριθμητικές συμβολοσειρές του JavaScript μπορούν να έχουν αριθμητικό περιεχόμενο:

var x = 100;         // ο x είναι αριθμός
var y = "100";       // ο y είναι αλφαριθμητική συμβολοσειρά

Σε όλες τις αριθμητικές πράξεις, το JavaScript προσπαθεί να μετατρέψει τις αλφαριθμητικές συμβολοσειρές σε αριθμούς:

Αυτό το παράδειγμα λειτουργεί έτσι:

var x = "100";
var y = "10";
var z = x / y;       // ο z θα είναι 10

Δοκιμάστε το προσωπικά

Αυτό το παράδειγμα θα λειτουργήσει όπως και το προηγούμενο παράδειγμα:

var x = "100";
var y = "10";
var z = x * y;       // ο z θα είναι 1000

Δοκιμάστε το προσωπικά

Αυτό το παράδειγμα λειτουργεί έτσι:

var x = "100";
var y = "10";
var z = x - y;      // ο z θα είναι 90

Δοκιμάστε το προσωπικά

αλλά αυτό το παράδειγμα δεν θα λειτουργήσει όπως το προηγούμενο παράδειγμα:

var x = "100";
var y = "10";
var z = x + y;       // ο z δεν θα είναι 110 (είναι 10010)

Δοκιμάστε το προσωπικά

Στο τελευταίο παράδειγμα, το JavaScript χρησιμοποιεί τον αριθμητικό τελεστή + για την αλληλουχία συμβολοσειράς.

NaN - Ανυπολόγιστος Αριθμός

NaN είναι κλειστή λέξη του JavaScript, που δείχνει ότι ένας αριθμός δεν είναι νόμιμος αριθμός.

Η απόδοση της διαίρεσης με μια μη αριθμητική αλφαριθμητική συμβολοσειρά είναι NaN (Not a Number):

Παράδειγμα

var x = 100 / "Apple";  // ο x θα είναι NaN (Not a Number)

Δοκιμάστε το προσωπικά

είτε, αν η αλφαριθμητική συμβολοσειρά περιέχει αριθμούς, τότε το αποτέλεσμα θα είναι αριθμός:

Παράδειγμα

var x = 100 / "10";     // ο x θα είναι 10

Δοκιμάστε το προσωπικά

Μπορείτε να χρησιμοποιήσετε τη全局 JavaScript συναρτηση isNaN() να καθορίσει αν μια τιμή είναι αριθμός:

Παράδειγμα

var x = 100 / "Apple";
isNaN(x);               // Επιστρέφει το true, γιατί το x δεν είναι αριθμός

Δοκιμάστε το προσωπικά

να είστε προσεκτικοί NaN。Αν χρησιμοποιείτε στο μαθηματικό σας υπολογισμό NaNτότε το αποτέλεσμα θα είναι επίσης NaN

Παράδειγμα

var x = NaN;
var y = 5;
var z = x + y;         // Ο z θα είναι NaN

Δοκιμάστε το προσωπικά

οι αποτελέσματα μπορεί να είναι συνδυασμένα:

Παράδειγμα

var x = NaN;
var y = "5";
var z = x + y;         // Ο z θα είναι NaN5

Δοκιμάστε το προσωπικά

NaN είναι αριθμόςtypeof NaN επιστρέφει number

Παράδειγμα

typeof NaN;             // Επιστρέφει "number"

Δοκιμάστε το προσωπικά

Infinity

Infinity ή -Infinity)είναι η τιμή που το JavaScript επιστρέφει όταν ο αριθμός υπερβαίνει το μέγιστο δυνατό μέγεθος.

Παράδειγμα

var myNumber = 2;
while (myNumber != Infinity) {          // Εκτελεί μέχρι το Infinity
    myNumber = myNumber * myNumber;
}

Δοκιμάστε το προσωπικά

Η διαίρεση με το μηδέν (-zero) δημιουργεί επίσης Infinity

Παράδειγμα

var x =  2 / 0;          // Ο x θα είναι Infinity
var y = -2 / 0;          // Ο y θα είναι -Infinity

Δοκιμάστε το προσωπικά

Infinity είναι αριθμός:typeOf Infinity επιστρέφει number

Παράδειγμα

typeof Infinity;        // Επιστρέφει "number"

Δοκιμάστε το προσωπικά

δεκαεξαδικό

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

Παράδειγμα

var x = 0xFF;             // Ο x θα είναι 255.

Δοκιμάστε το προσωπικά

Μην γράφετε αριθμούς με προκαταρκτικό μηδέν (π.χ. 07).

Μερικές εκδόσεις του JavaScript θα ερμηνεύσουν τους αριθμούς με προκαταρκτικό μηδέν ως οκταδικούς.

Από προεπιλογή, το JavaScript εμφανίζει τους αριθμούς ως δεκαδικούς.

Αλλά μπορείτε να χρησιμοποιήσετε toString() Η μέθοδος εκτυπώνει τον αριθμό σε δεκαεξαδικό, οκταδικό ή δυαδικό.

Παράδειγμα

var myNumber = 128;
myNumber.toString(16);     // Επιστρέφει 80
myNumber.toString(8);      // Επιστρέφει 200
myNumber.toString(2);      // Επιστρέφει 10000000

Δοκιμάστε το προσωπικά

Οι αριθμοί μπορούν να είναι αντικείμενα

Συνήθως το JavaScript δημιουργεί αριθμούς μέσω των πρωτογενών τιμών: var x = 123

Αλλά μπορεί να χρησιμοποιηθεί και η λέξη-κλειδί new Ορισμένο ως αντικείμενο: var y = new Number(123)

Παράδειγμα

var x = 123;
var y = new Number(123);
// typeof x επιστρέφει number
// typeof y επιστρέφει object

Δοκιμάστε το προσωπικά

Παρακαλώ μην δημιουργείτε αντικείμενα αριθμού. Αυτό μπορεί να μειώσει την ταχύτητα εκτέλεσης.

new Οι λέξεις-κλειδιά κάνουν το κώδικα πιο περίπλοκο και προκαλούν ορισμένα απρόβλεπτα αποτελέσματα:

Όταν χρησιμοποιείτε == Με τον οπτικό παράγοντα, τα αριθμητικά φαίνονται ίδια:

Παράδειγμα

var x = 500;             
var y = new Number(500);
// (x == y) είναι αληθές, επειδή ο τύπος του x και του y είναι ίδιος

Δοκιμάστε το προσωπικά

Όταν χρησιμοποιείτε === Μετά την χρήση του οπτικού παράγοντα, τα αριθμητικά γίνονται μη ίδια, επειδή === Οι οπτικοί παράγοντες χρειάζονται τόσο τον τύπο όσο και την τιμή για να είναι ίδιοι.

Παράδειγμα

var x = 500;             
var y = new Number(500);
// (x === y) είναι ψευδές, επειδή ο τύπος του x και του y είναι διαφορετικός

Δοκιμάστε το προσωπικά

Κακότερα ακόμα. Τα αντικείμενα δεν μπορούν να συγκριθούν:

Παράδειγμα

var x = new Number(500);             
var y = new Number(500);
// (x == y) είναι ψευδές, επειδή τα αντικείμενα δεν μπορούν να συγκριθούν

Δοκιμάστε το προσωπικά

Τα αντικείμενα JavaScript δεν μπορούν να συγκριθούν.