JavaScript Sonlar (Numbers)
JavaScript-da sonlar uchun faqat bitta tur mavjud. Sonlarni o'nli nuqta bilan (decimals) yoki nuqtasiz yozish mumkin.
Misol
let x = 3.14; // O'nli nuqta bilan
let y = 3; // NuqtasizJuda katta yoki juda kichik sonlarni ilmiy (eksponent) ko'rinishda yozish mumkin:
Misol
let x = 123e5; // 12300000
let y = 123e-5; // 0.00123JavaScript 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
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
let x = 0.2 + 0.1; // Natija: 0.30000000000000004 bo'lishi mumkinUshbu muammoni hal qilish uchun sonlarni butun songa aylantirib hisoblash va keyin bo'lish yordam beradi:
let x = (0.2 * 10 + 0.1 * 10) / 10; // Natija: 0.3Sonlar 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:
let x = 10;
let y = 20;
let z = x + y; // 30Agar ikkita matnni (string) qo'shsangiz, natija birlashtirilgan matn bo'ladi:
let x = "10";
let y = "20";
let z = x + y; // "1020"Agar son va matnni qo'shsangiz, natija matn bo'ladi:
let x = 10;
let y = "20";
let z = x + y; // "1020"Muhim
JavaScript interpretatori kodni chapdan o'ngga qarab bajaradi.
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:
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:
let x = 100 / "Apple"; // NaNQiymat 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:
let x = 2 / 0; // InfinityO'n oltilik sanoq tizimi (Hexadecimal)
Agar son 0x bilan boshlansa, JavaScript buni o'n oltilik (hexadecimal) doimiy deb tushunadi:
let x = 0xFF; // 255Sonlar 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.
