Numbers

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 / 0 i Math.sqrt( -10 ))
  • Operacja arytmetyczna z wynikiem nieokreślonym (0 * Infinity)
  • Działanie arytmetyczne, które zawiera wyraźną funkcję NaN (NaN + 2) albo NaN wynik (2 * "string" / 2)

Sprawdź swoją wiedzę

Co jest wynikiem przekazania pola false do Number()?

0
Fałsz
NaN
1

Jaki jest wynik poniższego działania matematycznego?

"Six" * 3

NaN
2
18
Prawda
0