MC, 2025
Ilustracja do artykułu: Javascript Number – wszystko, co musisz wiedzieć o liczbach w JavaScript

Javascript Number – wszystko, co musisz wiedzieć o liczbach w JavaScript

JavaScript jest jednym z najczęściej używanych języków programowania, szczególnie w kontekście aplikacji webowych. Wśród wielu typów danych, które są dostępne w tym języku, jednym z najważniejszych jest typ "number". Czym dokładnie są liczby w JavaScript? Jak je wykorzystać w codziennej pracy programisty? Oto kompletny przewodnik po typie "number", w którym przyjrzymy się jego właściwościom, sposobom konwersji, operacjom matematycznym i najczęstszym błędom, które mogą wystąpić. Zaczynajmy!

1. Co to jest typ "number" w JavaScript?

W JavaScript typ "number" jest jednym z podstawowych typów danych. Jest wykorzystywany do przechowywania liczb, zarówno całkowitych, jak i zmiennoprzecinkowych. W przeciwieństwie do wielu innych języków programowania, JavaScript nie rozróżnia osobnych typów dla liczb całkowitych i zmiennoprzecinkowych. Zarówno liczby 1, jak i 1.5 są traktowane jako liczby typu "number".

Warto dodać, że typ "number" w JavaScript nie jest ograniczony przez wielkość zmiennej w tradycyjny sposób. Zamiast tego korzysta z 64-bitowego formatu zmiennoprzecinkowego, który jest zgodny z IEEE 754. Oznacza to, że może przechowywać bardzo duże lub bardzo małe liczby z pewną dokładnością. Jednakże, z uwagi na sposób reprezentacji liczb w pamięci, czasami mogą wystąpić błędy zaokrągleń, o czym za chwilę opowiemy.

2. Jak tworzyć liczby w JavaScript?

Tworzenie liczb w JavaScript jest bardzo proste. Liczby mogą być zapisywane bezpośrednio w kodzie, np.:

let liczbaCałkowita = 42;
let liczbaZmiennoprzecinkowa = 3.14;

Warto zauważyć, że JavaScript automatycznie rozpozna, czy mamy do czynienia z liczbą całkowitą, czy zmiennoprzecinkową, na podstawie zapisu. Można też używać liczb w zapisie naukowym, np.:

let liczbaNaukowa = 1e6; // to samo co 1000000
let liczbaUjemna = -3.5; // liczba zmiennoprzecinkowa

Oprócz zapisu liczby możemy również stworzyć ją za pomocą funkcji `Number()`, która konwertuje wartości, które mogą być traktowane jako liczba, np. łańcuchy znaków. Jeśli wartość nie jest liczbą, wynik będzie `NaN` (Not a Number):

let liczba = Number("123"); // wynik: 123
let nieLiczba = Number("abc"); // wynik: NaN

3. Jakie operacje matematyczne można wykonać na liczbach w JavaScript?

JavaScript oferuje wiele operatorów matematycznych, które można wykorzystać do manipulowania liczbami. Wśród podstawowych operatorów matematycznych, które obsługuje JavaScript, znajdziesz:

  • Dodawanie (+) – wykonuje dodawanie dwóch liczb.
  • let wynik = 5 + 10; // wynik: 15
  • Odejmowanie (-) – wykonuje odejmowanie jednej liczby od drugiej.
  • let wynik = 20 - 8; // wynik: 12
  • Mnożenie (*) – wykonuje mnożenie dwóch liczb.
  • let wynik = 4 * 3; // wynik: 12
  • Dzielenie (/) – wykonuje dzielenie jednej liczby przez drugą.
  • let wynik = 10 / 2; // wynik: 5
  • Reszta z dzielenia (%) – zwraca resztę z dzielenia.
  • let wynik = 7 % 3; // wynik: 1 (7 / 3 = 2 reszta 1)
  • Potęgowanie (**) – wprowadzone w nowszych wersjach JavaScript, pozwala na podniesienie liczby do potęgi.
  • let wynik = 2 ** 3; // wynik: 8

Warto pamiętać, że w JavaScript dzielenie przez zero nie generuje błędu. Zamiast tego zwraca specjalne wartości: "Infinity" (pozytywna nieskończoność), "-Infinity" (negatywna nieskończoność) lub "NaN", gdy próbujemy wykonać operację na "NaN".

4. Problemy z precyzją liczb zmiennoprzecinkowych

Chociaż JavaScript umożliwia pracę z bardzo dużymi i bardzo małymi liczbami, może pojawić się problem z precyzją, szczególnie w przypadku liczb zmiennoprzecinkowych. Problem ten wynika z ograniczeń reprezentacji liczb zmiennoprzecinkowych w standardzie IEEE 754. Na przykład, jeśli spróbujemy dodać dwie liczby zmiennoprzecinkowe, wynik może być lekko nieprecyzyjny:

let wynik = 0.1 + 0.2;
console.log(wynik); // wynik: 0.30000000000000004

Choć wynik wydaje się zbliżony do oczekiwanego (0.3), w rzeczywistości wynik jest minimalnie inny. Można temu zaradzić, stosując zaokrąglanie do odpowiedniej liczby miejsc po przecinku:

let wynik = Math.round((0.1 + 0.2) * 100) / 100; // wynik: 0.3

5. Konwersje typów danych na liczby

W JavaScript bardzo często zachodzi potrzeba konwersji różnych typów danych na liczby, zwłaszcza wtedy, gdy operujemy na danych pochodzących z formularzy, z API lub z innych źródeł, które zwracają wartości w postaci łańcuchów tekstowych. W tym celu można używać różnych metod:

  • parseInt() – konwertuje łańcuch tekstowy na liczbę całkowitą. Można także podać podstawę liczby (np. dziesiętną, ósemkową, szesnastkową).
  • let liczba = parseInt("42"); // wynik: 42
    let liczbaHex = parseInt("1f", 16); // wynik: 31 (16-ny system liczbowy)
    
  • parseFloat() – konwertuje łańcuch na liczbę zmiennoprzecinkową.
  • let liczba = parseFloat("3.14"); // wynik: 3.14
    
  • Number() – konwertuje dowolną wartość na liczbę, np. łańcuchy znaków czy wartości logiczne (true staje się 1, false staje się 0).
  • let liczba = Number("123.45"); // wynik: 123.45
    

6. Najczęstsze błędy przy pracy z liczbami w JavaScript

Podczas pracy z liczbami w JavaScript mogą pojawić się błędy, które warto znać:

  • Problemy z precyzją – jak wspomniano wcześniej, liczby zmiennoprzecinkowe mogą być nieprecyzyjne w wyniku ograniczeń IEEE 754.
  • Konwersja typu – należy uważać przy konwersji typów, zwłaszcza w przypadku wartości logicznych i łańcuchów, które mogą prowadzić do błędów.
  • Nieoczekiwane wartości "NaN" – warto zawsze sprawdzać, czy wynik operacji jest liczbą, używając metody `isNaN()`.

7. Podsumowanie

Typ "number" w JavaScript to niezwykle ważny element, który pozwala na przechowywanie i manipulowanie liczbami. Dzięki prostym operatorom matematycznym i funkcjom konwersji typów możemy efektywnie operować na liczbach. Pamiętaj jednak o problemach z precyzją i o tym, że JavaScript traktuje wszystkie liczby zmiennoprzecinkowe jako jeden typ "number". Poznanie tych podstaw pomoże Ci uniknąć wielu powszechnych błędów, a także skutecznie pracować z liczbami w Twoich aplikacjach!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: