U JavaScriptu, svi numerički podaci su uskladišteni kao 64-bitni brojevi s pokretnim zarezom. Brojevi su pohranjeni kao niz bitova nula i jedinica, što je direktna manifestacija binarnog sistema koji računari koriste za obradu podataka. Na nivou koda, brojevi se predstavljaju u dekadnom sistemu, ali je korisno razumjeti kako JavaScript koristi binarni prikaz za obradu i smještanje numeričkih vrijednosti.
Sistemski tipovi brojeva
- Binarni (binary): Najniži nivo digitalne obrade, koristi samo dve cifre - 0 i 1.
- Oktalni (octal): Koristi osmobazni sistem (baze 8), zastupljen sa ciframa od 0 do 7.
- Heksadecimalni (hexadecimal): Koristi šesnaestobazni sistem (base 16), zastupljen sa ciframa od 0 do 9 i slovima od A do F.
Kategorizacija brojeva
Brojevi se mogu podijeliti u sledeće grupe:
- integer - decimalni brojevi bez ostatka. Kao integeri uglavnom se koriste brojevi koji pripadaju dekadnom sistemu, ali su u upotrebi oktalni i heksadecimalni brojevi.
- float - decimalni brojevi sa ostatkom, tj decimalnom tačkom.
- double - specijalni tip float broja koji omogućava veću preciznost od standardnog float broja. JavaScript po defaultu koristi “double-precision floating-point format” što je ekvivalento tipu double u drugim programskim jezicima.
U JavaScriptu, svi brojevi se tretiraju kao ‘number’ tip. Za ekstremne veličine brojeva koristi se predefinisana konstanta Infinity.
Brojevi u JavaScriptu se mogu pisati koristeći separator _ kako bi se poboljšala čitljivost koda, naročito pri radu sa velikim numeričkim vrednostima.
NaN - nedefinisani broj
JavaScript ima posebnu numeričku vrijednost poznatu kao Nedefinisani Broj (NaN), koja je globalna konstanta. Ova vrijednost označava da je rezultat operacije nevažeći broj, odnosno nešto što nije broj. Na primjer, ako pokušamo podijeliti string s brojem, rezultat će biti NaN.
NaN ima dvije specifične karakteristike:
- Svaka operacija koja uključuje NaN kao operand također rezultira NaN-om.
- NaN nije jednak nijednoj vrijednosti, čak ni drugim NaN vrijednostima.
Number konstruktor
U JS-u brojeve možemo predstaviti u primitivnoj formi, ali i Number tip koja predstavlja referencu za numeričke vrijednosti. Ako koristimo operator new kreiramo Number objekat jer koristimo Number konstruktor i prosleđujemo mu brojčanu vrijednost. Da dobijemo primitivnu vrijednost iz Number objekta koristimo metodu valueOf. U slučaju da izostavimo operator new typeof će ukazivati na number ne na object.
Number svojstva i metodi
Pri radu sa velikim brojevima mogu se koristiti sledeća svojstva:
- Number.MAX_VALUE- najveća numerička vrijednost sa kojom je moguće raditi u JS-u.
- Number.MIN_VALUE - najmanja numerička vrijednost sa kojom je moguće raditi u JS.
- Number.MAX_SAFE_INTEGER - najveća cjelobrojna vrijednost koja obezbjeđuje tačnost računarskih operacija.
- Number.MIN_SAFE_INTEGER - najmanja cjelobrojna vrijednost koja obezbjeđuje tačnost računarskih operacija.
Number konstruktor posjeduje i korisne metode.
BigInt
Predstavlja novi tip za numeričke vrijednosti. Koristi se za predstavljanje 64-bitnog integera. BigInt literal se piše kao string brojeva koji na kraju imaju malo slovo n.
Da konvertujemo regularne brojeve u bigint može se koristiti funkcija BigInt().
Aritmetika sa big int je ista kao i sa običnim brojevima osim što dijeljenje zaokružuje rezultat ka nuli i odbacuje ostatak.