Liczby JavaScript

JavaScript ma tylko jeden typ liczbowy.

Można pisać liczby z lub bez kropki.

JavaScript liczby

Wpisz liczbę w JavaScript można zarówno z kropką, jak i bez

Przykład

var x = 3.14;    // Wartość z kropką
var y = 3;       // Wartość bez kropki

Spróbuj sam

Bardzo duże lub bardzo małe liczby można zapisać w formie liczby naukowej:

Przykład

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

Spróbuj sam

Liczby w JavaScript są zawsze liczbami zmiennoprzecinkowymi 64-bitowymi

W przeciwieństwie do wielu innych języków programowania, JavaScript nie definiuje różnych typów liczb, takich jak liczby całkowite, krótkie, długie, zmiennoprzecinkowe itp.

Liczby w JavaScript są zawsze przechowywane jako liczby zmiennoprzecinkowe dwuwspółrzędne, zgodnie z międzynarodowym standardem IEEE 754.

Ten format przechowuje wartości w 64 bitach, gdzie 0 do 51 przechowuje cyfry (fragmenty), 52 do 62 przechowuje wykładniki, a 63 bit przechowuje znak:

Wartość(znana również jako Frakcja/Mantysza) Wykładnik Znak
52 bitów(0 - 51) 11 bitów (52 - 62) 1 bit (63)

Dokładność

Całkowite liczby (nie używające wykładników ani liczb naukowych) są dokładne do 15 miejsc po przecinku.

Przykład

var x = 999999999999999;   // x będzie 999999999999999
var y = 9999999999999999;  // y będzie 10000000000000000

Spróbuj sam

Maksymalna liczba miejsc po przecinku dla liczb dziesiętnych to 17, ale arytmetyka zmiennoprzecinkowa nie jest zawsze 100% precyzyjna:

Przykład

var x = 0.2 + 0.1;         // x będzie 0.30000000000000004

Spróbuj sam

Użycie mnożenia i dzielenia pomoże rozwiązać powyższy problem:

Przykład

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x będzie 0.3

Spróbuj sam

Dodawanie liczby i ciągu znaków

Uwaga!!

Dodawanie i łańcuchowanie w JavaScript używają operatora +.

Liczby dodaje się za pomocą dodawania. Ciągi znaków używają łańcuchowania.

Jeśli dodasz dwie liczby, wynik będzie liczbą:

Przykład

var x = 10;
var y = 20;
var z = x + y;           // z będzie 30 (liczba)

Spróbuj sam

Jeśli dodasz dwa ciągi znaków, wynik będzie łańcuchem znaków:

Przykład

var x = "10";
var y = "20";
var z = x + y;           // z będzie 1020 (ciag znaków)

Spróbuj sam

Jeśli dodasz liczbę i ciąg znaków, wynik będzie łańcuchem znaków:

Przykład

var x = 10;
var y = "20";
var z = x + y;           // z będzie 1020 (ciąg znaków)

Spróbuj sam

Jeśli dodasz ciąg znaków i liczbę, wynik będzie łączeniem ciągów znaków:

Przykład

var x = "10";
var y = 20;
var z = x + y;           // z będzie 1020 (ciag znaków)

Spróbuj sam

Popularnym błędem jest mylenie wyniku z 30:

Przykład

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

Spróbuj sam

Popularnym błędem jest mylenie wyniku z 102030:

Przykład

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

Spróbuj sam

JavaScript skompiluje od lewej do prawej.

Ponieważ x i y są liczbami, 10 + 20 jest dodawane.

Ponieważ z jest ciagiem znaków, 30 + "30" jest łączone.

Ciąg znaków liczbowy

Ciągi znaków w JavaScript mogą zawierać liczbę:

var x = 100;         // x jest liczbą
var y = "100";       // y jest ciagiem znaków

W wszystkich operacjach liczbowych JavaScript próbuje przekształcić ciąg znaków w liczbę:

Ten przykład działa w ten sposób:

var x = "100";
var y = "10";
var z = x / y;       // z będzie 10

Spróbuj sam

Ten przykład również działa w ten sposób:

var x = "100";
var y = "10";
var z = x * y;       // z będzie 1000

Spróbuj sam

Ten przykład działa w ten sposób:

var x = "100";
var y = "10";
var z = x - y;      // z będzie 90

Spróbuj sam

Ale ten przykład nie będzie działał tak, jak powyżej:

var x = "100";
var y = "10";
var z = x + y;       // z nie będzie 110 (zamiast tego będzie 10010)

Spróbuj sam

W ostatnim przykładzie JavaScript użył operatora + do łączenia ciągów znaków.

NaN - Nie liczba

NaN Jest słowem rezerwowanym w JavaScript, wskazującym, że liczba nie jest poprawną liczbą.

Próba dzielenia przez ciąg znaków, który nie jest liczbą, da NaN (Not a Number):

Przykład

var x = 100 / "Apple";  // x będzie NaN (Not a Number)

Spróbuj sam

Jednak, jeśli ciąg znaków zawiera liczbę, wynik będzie liczbą:

Przykład

var x = 100 / "10";     // x będzie 10

Spróbuj sam

Możesz użyć globalnej funkcji JavaScript isNaN() Aby określić, czy wartość jest liczbą:

Przykład

var x = 100 / "Apple";
isNaN(x);               // Zwraca true, ponieważ x nie jest liczbą

Spróbuj sam

bądź ostrożny NaN. Jeśli używasz NaNto wynik będzie również NaN:

Przykład

var x = NaN;
var y = 5;
var z = x + y;         // z będzie NaN

Spróbuj sam

rezultat może być łączeniem ciągów:

Przykład

var x = NaN;
var y = "5";
var z = x + y;         // z będzie NaN5

Spróbuj sam

NaN jest liczbą,typeof NaN zwraca number:

Przykład

typeof NaN;             // zwraca "number"

Spróbuj sam

Infinity

Infinity (lub -Infinityjest wartością zwracaną przez JavaScript, gdy obliczenia liczbowe wykraczają poza maksymalny możliwy zakres liczby.

Przykład

var myNumber = 2;
while (myNumber != Infinity) {          // wykonywać do Infinity
    myNumber = myNumber * myNumber;
}

Spróbuj sam

dzielenie przez 0 (zero) również generuje Infinity:

Przykład

var x =  2 / 0;          // x będzie Infinity
var y = -2 / 0;          // y będzie -Infinity

Spróbuj sam

Infinity jest liczbą:typeOf Infinity zwraca number.

Przykład

typeof Infinity;        // zwraca "number"

Spróbuj sam

szesnastkowy

JavaScript interpretuje liczby z prefiksem 0x liczby stałe są interpretowane jako szesnastkowe.

Przykład

var x = 0xFF;             // x będzie 255.

Spróbuj sam

Nigdy nie zapisuj liczb z wiodącymi zerami (np. 07).

Niektóre wersje JavaScript interpretują liczby z wiodącymi zerami jako ósemkowe.

Domyślnie, JavaScript wyświetla liczby jako dziesiętne

Ale możesz użyć toString() Metoda wyświetla liczbę w szesnastkowym, ósemkowym lub dwójkowym formacie.

Przykład

var myNumber = 128;
myNumber.toString(16);     // zwraca 80
myNumber.toString(8);      // zwraca 200
myNumber.toString(2);      // zwraca 10000000

Spróbuj sam

Liczby mogą być obiektami

Zwykle liczby w JavaScriptie tworzone są za pomocą wartości pierwotnych: var x = 123

Ale można to również zrobić za pomocą słowa kluczowego new Zdefiniowane jako obiekt: var y = new Number(123)

Przykład

var x = 123;
var y = new Number(123);
// typeof x zwraca number
// typeof y zwraca object

Spróbuj sam

Nie twórz obiektów liczbowych. To może spowolnić wykonanie.

new Słowa kluczowe mogą upcompliczyć kod i prowadzić do pewnych nieprzewidzianych wyników:

Gdy używasz == Operator równości sprawia, że liczby, które wydają się być równe, wyglądają na równe:

Przykład

var x = 500;             
var y = new Number(500);
// (x == y) zwraca prawdę, ponieważ x i y mają równą wartość

Spróbuj sam

Gdy używasz === Po użyciu operatora równości, liczby, które wydają się być równe, stają się nierówne, ponieważ === Operator wymaga równości zarówno typu, jak i wartości.

Przykład

var x = 500;             
var y = new Number(500);
// (x === y) zwraca fałsz, ponieważ x i y mają różne typy

Spróbuj sam

Nawet gorzej. Obiekty nie mogą być porównywane:

Przykład

var x = new Number(500);             
var y = new Number(500);
// (x == y) zwraca fałsz, ponieważ obiekty nie mogą być porównywane

Spróbuj sam

Obiekty JavaScript nie mogą być porównywane.