Skip to content

JavaScript Sonlar (Numbers)

JavaScript-da sonlar uchun faqat bitta tur mavjud. Sonlarni o'nli nuqta bilan (decimals) yoki nuqtasiz yozish mumkin.

Misol

js
let x = 3.14;    // O'nli nuqta bilan
let y = 3;       // Nuqtasiz

Juda katta yoki juda kichik sonlarni ilmiy (eksponent) ko'rinishda yozish mumkin:

Misol

js
let x = 123e5;    // 12300000
let y = 123e-5;   // 0.00123

JavaScript Sonlari Har Doim 64-bitli Floating Point

Boshqa ko'p dasturlash tillaridan farqli o'laroq, JavaScript-da sonlarning har xil turlari (integer, short, long, float va h.k.) mavjud emas.

JavaScript sonlari har doim xalqaro IEEE 754 standartiga muvofiq ikkilangan aniqlikdagi floating point (double precision floating point) shaklida saqlanadi. Ushbu format sonlarni 64 bitda saqlaydi, bunda:

  • Son (fraksiya/mantissa) 0 dan 51-bitgacha saqlanadi.
  • Eksponent (daraja) 52 dan 62-bitgacha saqlanadi.
  • Ishora (sign) 63-bitda saqlanadi.

Aniqlik (Precision)

Butun sonlar aniqligi

Butun sonlar (nuqtasiz sonlar) 15 xonagacha aniq hisoblanadi.

Misol

js
let x = 999999999999999;   // x: 999999999999999 bo'ladi
let y = 9999999999999999;  // y: 10000000000000000 bo'ladi (noaniqlik boshlanadi)

Floating Point aniqligi

O'nli kasrli sonlar bilan arifmetik amallar har doim ham 100% aniq bo'lmasligi mumkin:

Eslatma

js
let x = 0.2 + 0.1; // Natija: 0.30000000000000004 bo'lishi mumkin

Ushbu muammoni hal qilish uchun sonlarni butun songa aylantirib hisoblash va keyin bo'lish yordam beradi:

js
let x = (0.2 * 10 + 0.1 * 10) / 10; // Natija: 0.3

Sonlar va Matnlarni Qo'shish

Diqqat

JavaScript-da + operatori ham qo'shish, ham birlashtirish (konkatenatsiya) uchun ishlatiladi. Sonlar qo'shiladi. Matnlar birlashtiriladi.

Agar siz ikkita sonni qo'shsangiz, natija son bo'ladi:

js
let x = 10;
let y = 20;
let z = x + y; // 30

Agar ikkita matnni (string) qo'shsangiz, natija birlashtirilgan matn bo'ladi:

js
let x = "10";
let y = "20";
let z = x + y; // "1020"

Agar son va matnni qo'shsangiz, natija matn bo'ladi:

js
let x = 10;
let y = "20";
let z = x + y; // "1020"

Muhim

JavaScript interpretatori kodni chapdan o'ngga qarab bajaradi.

js
let x = 10;
let y = 20;
let z = "30";
let result = x + y + z; // Natija: "3030" bo'ladi (avval 10+20=30, keyin "30"+"30")

Raqamli Matnlar (Numeric Strings)

JavaScript matematik amallar bajarilayotganda matnlarni sonlarga aylantirishga harakat qiladi:

js
let x = "100";
let y = "10";
let z = x / y; // Natija: 10 (son bo'ladi)

Bu ko'paytirish (*), bo'lish (/) va ayirish (-) amallari uchun ishlaydi, lekin qo'shish (+) uchun emas (chunki u birlashtirish deb tushuniladi).


NaN - Son emas (Not a Number)

NaN — bu son qonuniy (to'g'ri) son emasligini bildiruvchi JavaScript kalit so'zidir. Masalan, sonni matnga bo'lish NaN natijasini beradi:

js
let x = 100 / "Apple"; // NaN

Qiymat NaN ekanligini tekshirish uchun isNaN() funksiyasidan foydalaniladi.


Infinity - Cheksizlik

Infinity (yoki -Infinity) — natija hisoblanishi mumkin bo'lgan eng katta sondan ham oshib ketganda qaytariladi. Nolga bo'lish ham Infinity natijasini beradi:

js
let x = 2 / 0; // Infinity

O'n oltilik sanoq tizimi (Hexadecimal)

Agar son 0x bilan boshlansa, JavaScript buni o'n oltilik (hexadecimal) doimiy deb tushunadi:

js
let x = 0xFF; // 255

Sonlar Obyekt Sifatida

Odatda JavaScript sonlari primitiv qiymatlardir. Lekin ularni new yordamida obyekt sifatida ham yaratish mumkin: let y = new Number(123);

maslahat

Sonlarni obyekt sifatida yaratmang. Bu kodni sekinlashtiradi va kutilmagan natijalarga (masalan, solishtirishda xatolarga) olib keladi.