Liczby JavaScript
- Poprzednia strona JS szablon stringów
- Następna strona JS BigInt
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
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
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
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
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
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)
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)
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)
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)
Popularnym błędem jest mylenie wyniku z 30:
Przykład
var x = 10; var y = 20; var z = "The result is: " + x + y;
Popularnym błędem jest mylenie wyniku z 102030:
Przykład
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
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
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
Ten przykład działa w ten sposób:
var x = "100"; var y = "10"; var z = x - y; // z będzie 90
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)
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)
Jednak, jeśli ciąg znaków zawiera liczbę, wynik będzie liczbą:
Przykład
var x = 100 / "10"; // x będzie 10
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ą
bądź ostrożny NaN
. Jeśli używasz NaN
to wynik będzie również NaN
:
Przykład
var x = NaN; var y = 5; var z = x + y; // z będzie NaN
rezultat może być łączeniem ciągów:
Przykład
var x = NaN; var y = "5"; var z = x + y; // z będzie NaN5
NaN
jest liczbą,typeof NaN
zwraca number
:
Przykład
typeof NaN; // zwraca "number"
Infinity
Infinity
(lub -Infinity
jest 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; }
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
Infinity
jest liczbą:typeOf Infinity
zwraca number
.
Przykład
typeof Infinity; // zwraca "number"
szesnastkowy
JavaScript interpretuje liczby z prefiksem 0x
liczby stałe są interpretowane jako szesnastkowe.
Przykład
var x = 0xFF; // x będzie 255.
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
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
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ść
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
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
Obiekty JavaScript nie mogą być porównywane.
- Poprzednia strona JS szablon stringów
- Następna strona JS BigInt