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 Infinitywystę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 / 0iMath.sqrt( -10 )) - Operacja arytmetyczna z wynikiem nieokreślonym (
0 * Infinity) - Działanie arytmetyczne, które zawiera wyraźną funkcję
NaN(NaN + 2) alboNaNwynik (2 * "string" / 2)
Sprawdź swoją wiedzę
Co jest wynikiem przekazania pola false do Number()?
Jaki jest wynik poniższego działania matematycznego?
"Six" * 3