Wartość liczbowa składa się z dowolnej serii znaków liczbowych, na przykład:
5
Typ danych liczbowych zawiera też kilka specjalnych właściwości globalnych, które
przedstawiają koncepcje liczbowe, takie jak Infinity
i NaN
, które oznaczają wartość
„nie jest liczbą”, może to być kolejny krok w kierunku działań matematycznych
na wartościach innych niż liczbowe.
Obiekt liczbowy
Gdy wartość jest przekazywana do funkcji Number()
, jest ona konwertowana na
odpowiednik liczbowy. Na przykład ciąg liczbowy prowadzi do odpowiednika
element podstawowy liczb:
Number( "10" );
> 10
Przekazywanie wartości false
lub null
do funkcji Number()
zwraca 0
i true
zwraca
1
.
Number( null );
> 0
Number( false );
> 0
Number( true );
> 1`
Jeśli nie można przekonwertować wartości, na przykład w przypadku undefined
lub ciągu znaków
zawierających znaki nienumeryczne, funkcja Number
zwraca NaN
:
Number( undefined );
> NaN
Number( "The number 3." );
> NaN
Jak opisano w sekcji Dziedziczenie prototypowe,
raczej nie będziesz mieć żadnego powodu, aby używać obiektu Number
jako
konstruktorem, bo zamiast literału liczbowego tworzy on obiekt Number
.
let numObject = new Number( 15 );
numObject;
> Number { 15 }
Ten obiekt zachowuje się jako jego wartość przypisana do działań matematycznych, ale nie spełnia rygorystycznych porównań równości z literałami liczbowymi, ponieważ typy danych nie pasują, nie zapewniając przy tym żadnej praktycznej korzyści w porównaniu z wartością dosłowną.
let tenObject = new Number( 10 );
tenObject + 5;
> 15
tenObject === 10;
> false
Liczby zmiennoprzecinkowe i całkowite
W JavaScripcie jest tylko jeden typ liczb: 64-bitowa IEEE 754-1985 podwójna precyzja
liczby zmiennoprzecinkowe między
-2^1024
i 2^1024
. Przed zapisaniem liczby w pamięci JavaScriptu najpierw
konwertuje tę liczbę na binarną liczbę zmiennoprzecinkową, tzw. zmiennoprzecinkową.
Ta 64-bitowa pamięć masowa (jeden dodatni lub ujemny bit „sign”, 11 bitów w przypadku wykładnik i 52 bity dla ułamka) mogą powodować błędy precyzji w przypadku dowolnej liczby cyfr, które nie mieszczą się w dozwolonym zakresie. To ograniczenie jest nieodłączne do typu danych liczbowych JavaScript.
0.1 + 0.7
> 0.7999999999999999
Wartość liczbowa może być zapisywana w postaci całkowitej, czyli liczby zmiennoprzecinkowej.
bez ułamka od -(2^53 − 1)
do 2^53 − 1
. Ponieważ unosi się ona
liczby całkowite są przechowywane w ten sam sposób, nie ma żadnej praktycznej różnicy
zasady ich działania. Zalecamy jednak używanie liczb całkowitych, gdy:
aby uniknąć błędów precyzji.
Operatory liczbowe
Gdy używasz standardowych operatorów matematycznych z elementami liczbowymi, funkcja matematyczny kolejność działań ma zastosowanie: wszystkie wyrażenia ujęte w nawiasy są sprawdzane jako pierwsze, a po nich następuje operator wykładniki, mnożenie, dzielenie, dodawanie i odejmowanie.
Operator | Nazwa | Opis | Wykorzystanie | Wynik |
---|---|---|---|---|
+ |
Dodanie | 2+2 |
4 |
|
- |
Odejmowanie | 4-2 |
2 |
|
* |
Mnożenie | 2*5 |
10 |
|
/ |
Podział | 10/5 |
2 |
|
++ |
Zwiększ | Dodaje 1 do liczby | 2++ |
3 |
-- |
Zmniejsz | Odejmuje jeden od liczby | 3-- |
2 |
** |
Wykładnik | Zwraca wynik podniesienia pierwszej wartości do potęgi drugiego operandu. |
2**4 |
16 |
% |
Pozostało | Zwraca resztę pozostawioną, gdy jest dzielony przez drugi operand. |
12%5 |
2 |
Możesz też używać operatorów przydziału matematycznego, aby wykonać obliczenia na wartości zmiennej i natychmiast przypisz tę obliczoną niedawno wartość do zmiennej.
Operator | Nazwa | Wykorzystanie |
---|---|---|
+= |
Przypisanie dodania | myValue += 2 |
-= |
Przypisanie odejmowania | myValue -= 2 |
*= |
Przypisanie mnożenia | myValue *= 2 |
/= |
Przypisanie oddziału | myValue /= 2 |
**= |
Przypisanie wykładnika | myValue **= 2 |
%= |
Pozostałe przypisanie | myValue %= 2 |
Wartości symboliczne
Element liczbowy ma też zastosowanie w kilku szczególnych przypadkach: „nie jest liczbą”
(NaN
) i wartości reprezentującej nieskończoność, która może być dodatnia
(Infinity
) lub ujemnych (-Infinity
).
Z dzieleniem przez zero, przypadkiem Infinity
występują rzadko
w których większość języków programowania powoduje błąd:
10 / 0
> Infinity
Pamiętaj, że w JavaScripcie wielkość liter ma znaczenie. Infinity
jest typem danych liczbowych
reprezentuje koncepcję nieskończoności, ale infinity
nie ma specjalnego znaczenia:
Infinity
> Infinity
infinity
> Uncaught ReferenceError: infinity is not defined
NaN
(co oznacza „Not a Number”)
pojawia się częściej w przypadku, gdy wynik operacji arytmetycznej
nie może być wyrażony liczbą. Na przykład JavaScript próbuje wywnioskować
typu danych z wartości i kontekstu, literał łańcuchowy zawierający tylko liczbę może
zostać użyte w działaniu matematycznym:
"2" * 2;
> 4
Jeśli jednak nie uda się przetworzyć tego ciągu jako wartości liczbowej, funkcja matematyczna skutkuje wartością inną niż liczba:
"two" * 2;
> NaN
Parametr NaN
jest zwracany w każdym przypadku, gdy nieprawidłowa wartość jest przedstawiona jako liczba.
w operacji matematycznej. Przykłady:
- Nieudane konwersje liczbowe (np.
parseInt( undefined )
) - Operacje arytmetyczne, w przypadku których wynik nie jest liczbą rzeczywistą (np.
0 / 0
iMath.sqrt( -10 )
) - Operacja arytmetyczna z wynikiem nieokreślonym (
0 * Infinity
) - Działanie arytmetyczne, które zawiera wyraźną funkcję
NaN
(NaN + 2
) alboNaN
wynik (2 * "string" / 2
)
Sprawdź swoją wiedzę
Co jest wynikiem przekazania pola false
do Number()
?
Jaki jest wynik poniższego działania matematycznego?
"Six" * 3