JS sonlar


ULASHISH

Number turlari

JavaScript-da faqat bitta Number turi mavjud.

Numberlar o‘nlik kasr bilan yoki kasrsiz yozilishi mumkin.

Misol

let x = 3.14;    // A number with decimals
let y = 3;       // A number without decimals

O‘zingiz sinab ko‘ring »

Juda katta yoki juda kichik Numberlar ilmiy (eksponent) ko‘rinishda yozilishi mumkin:

Misol

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

O‘zingiz sinab ko‘ring »


JavaScript Numberlar har doim 64-bitli suzuvchi nuqtali (Floating Point) hisoblanadi

Boshqa ko‘plab dasturlash tillaridan farqli o‘laroq, JavaScript har xil son turlarini (masalan, int, short, long, float) alohida ajratmaydi.

JavaScript raqamlari har doim xalqaro IEEE 754 standartiga muvofiq ikki tomonlama aniqlikdagi suzuvchi nuqtali Numberlar sifatida saqlanadi. Ushbu format raqamlarni 64 bitda saqlaydi, bu yerda raqam (kasr) 0 dan 51 gacha, ko‘rsatkich 52 dan 62 gacha va belgi 63 bitda saqlanadi:

Qiymat (aka Fraction/Mantissa) Ko‘rsatkich Imzo
52 bit (0 - 51) 11 bit (52 - 62) 1 bit (63)

Ko‘pgina dasturlash tillarida ko‘plab Numberlar turlari mavjud:

Butun sonlar (butun sonlar): bayt (8-bit), qisqa (16-bit), int (32-bit), uzun (64-bit)

Haqiqiy Numberlar (suzuvchi nuqta): float (32-bit), double (64-bit).

Javascript raqamlari har doim ikki barobar (64-bitli suzuvchi nuqta).


Butun son aniqligi

Butun sonlar (nuqtasiz yoki ko‘rsatkich belgisiz Numberlar) 15 tagacha aniqlik qiladi.

Misol

let x = 999999999999999;   // x will be 999999999999999
let y = 9999999999999999;  // y will be 10000000000000000
O‘zingiz sinab ko‘ring »

O‘nli kasrlarning maksimal soni - 17.

Suzuvchi aniqlik

Suzuvchi nuqta arifmetikasi har doim ham 100% aniq emas:

let x = 0.2 + 0.1;

O‘zingiz sinab ko‘ring »

Yuqoridagi muammoni hal qilish uchun u ko‘paytirish va bo‘lishga yordam beradi:

let x = (0.2 * 10 + 0.1 * 10) / 10;
O‘zingiz sinab ko‘ring »


Sonlar va stringlarni qo‘shish

Diqqat!

JavaScript qo‘shish va birlashtirish uchun + operatoridan foydalanadi.

Raqamlar qo‘shiladi. Stringlar birlashtiriladi.

Agar siz ikkita raqam qo‘shsangiz, natijada raqam bo‘ladi:

Misol

let x = 10;
let y = 20;
let z = x + y;
O‘zingiz sinab ko‘ring »

Agar siz ikkita String qo‘shsangiz, natijada string birikmasi bo‘ladi:

Misol

let x = "10";
let y = "20";
let z = x + y;
O‘zingiz sinab ko‘ring »

Agar siz raqam va String qo‘shsangiz, natijada string birikmasi bo‘ladi:

Misol

let x = 10;
let y = "20";
let z = x + y;
O‘zingiz sinab ko‘ring »

Agar siz String va raqam qo‘shsangiz, natijada string birikmasi bo‘ladi:

Misol

let x = "10";
let y = 20;
let z = x + y;
O‘zingiz sinab ko‘ring »

Keng tarqalgan xato - bu natija 30 bo‘lishini kutish:

Misol

let x = 10;
let y = 20;
let z = "The result is: " + x + y;
O‘zingiz sinab ko‘ring »

Keng tarqalgan xato bu natijani 102030 bo‘lishini kutishdir:

Misol

let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
O‘zingiz sinab ko‘ring »

JavaScript tarjimoni chapdan o‘ngga ishlaydi.

Birinchi 10 + 20 qo‘shiladi, chunki x va y ikkala raqamdir.

Keyin 30 + "30" birlashtiriladi, chunki z — string.


Raqamli Stringlar

JavaScript Stringlar raqamli tarkibga ega bo‘lishi mumkin:

let x = 100;         // x is a number

let y = "100";       // y is a string

JavaScript barcha sonli amallarda stringlarni sonlarga aylantirishga harakat qiladi:

Bu ishlaydi:

let x = "100";
let y = "10";
let z = x / y;

O‘zingiz sinab ko‘ring »

Bu ham ishlaydi:

let x = "100";
let y = "10";
let z = x * y;

O‘zingiz sinab ko‘ring »

Va bu ishlaydi:

let x = "100";
let y = "10";
let z = x - y;

O‘zingiz sinab ko‘ring »

Ammo bu ishlamaydi:

let x = "100";
let y = "10";
let z = x + y;

O‘zingiz sinab ko‘ring »

Oxirgi misolda JavaScript stringlarni birlashtirish uchun + operatoridan foydalanadi.


NaN - Raqam emas

NaN JavaScript-da saqlangan so‘z bo‘lib, raqam qonuniy raqam emasligini bildiradi.

Raqamli bo‘lmagan String bilan arifmetika qilishga urinish NaN (raqam emas) ga olib keladi:

Misol

let x = 100 / "Apple";

O‘zingiz sinab ko‘ring »

Biroq, agar String raqamli bo‘lsa, natija raqam bo‘ladi:

Misol

let x = 100 / "10";
O‘zingiz sinab ko‘ring »

Qiymat raqam emasligini bilish uchun global JavaScript isNaN() funksiyasidan foydalanishingiz mumkin:

Misol

let x = 100 / "Apple";
isNaN(x);
O‘zingiz sinab ko‘ring »

NaNga e’tibor bering. Agar siz matematik operatsiyada NaN dan foydalansangiz, natija ham NaN bo‘ladi:

Misol

let x = NaN;
let y = 5;
let z = x + y;
O‘zingiz sinab ko‘ring »

Yoki natija NaN5 kabi birlashma bo‘lishi mumkin:

Misol

let x = NaN;
let y = "5";
let z = x + y;
O‘zingiz sinab ko‘ring »

NaN son hisoblanadi: typeof NaN number qaytaradi:

Misol

typeof NaN;
O‘zingiz sinab ko‘ring »

Cheksizlik

Infinity (yoki -Infinity) - agar siz eng katta raqamdan tashqari raqamni hisoblasangiz, JavaScript qaytariladigan qiymatdir.

Misol

let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
  myNumber = myNumber * myNumber;
}
O‘zingiz sinab ko‘ring »

0 (nol) ga bo‘linish ham Infinity hosil qiladi:

Misol

let x =  2 / 0;
let y = -2 / 0;
O‘zingiz sinab ko‘ring »

Infinity son hisoblanadi: typeof Infinity number qaytaradi.

Misol

typeof Infinity;
O‘zingiz sinab ko‘ring »

O‘n oltilik

JavaScript raqamli konstantalarni, agar ular oldida 0x bo‘lsa, o‘n oltilik deb izohlaydi.

Misol

let x = 0xFF;
O‘zingiz sinab ko‘ring »

Hech qachon bosh nol bilan raqam yozmang (masalan, 07). Ba’zi JavaScript versiyalari, agar ular bosh nol bilan yozilgan bo‘lsa, ularni sakkizlik deb izohlaydi.

Odatiy bo‘lib, JavaScript raqamlarni 10 ta asosiy kasr sifatida ko‘rsatadi.

Lekin siz 2 ta bazadan 36 tagacha raqamlarni chiqarish uchun toString() usulidan foydalanishingiz mumkin.

O‘n oltilik asos 16. O‘nlik 10 asos. Sakkizlik asos 8. Ikkilik asos 2.

Misol

let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(12);
myNumber.toString(10);
myNumber.toString(8);
myNumber.toString(2);
O‘zingiz sinab ko‘ring »

JavaScript raqamlari obyektlar sifatida

Odatda JavaScript raqamlari literallardan yaratilgan ibtidoiy qiymatlardir:

let x = 123;

Biroq raqamlarni new kalit so‘zi bilan obyektlar sifatida ham aniqlash mumkin:

let y = new Number(123);

Misol

let x = 123;
let y = new Number(123);
O‘zingiz sinab ko‘ring »

Number obyektlarini yaratmang.

new kalit so‘zi kodni murakkablashtiradi va bajarilish tezligini sekinlashtiradi.

Raqamli obyektlar kutilmagan natijalarga olib kelishi mumkin:

== operatoridan foydalanilganda x va y teng bo‘ladi:

let x = 500;
let y = new Number(500);
O‘zingiz sinab ko‘ring »

=== operatoridan foydalanilganda x va y teng emas.

let x = 500;
let y = new Number(500);
O‘zingiz sinab ko‘ring »

(x==y) va (x===y) o‘rtasidagi farqga e’tibor bering.

(x == y) to‘g‘ri yoki noto‘g‘ri?

let x = new Number(500);
let y = new Number(500);
O‘zingiz sinab ko‘ring »

(x === y) rostmi yoki noto‘g‘ri?

let x = new Number(500);
let y = new Number(500);
O‘zingiz sinab ko‘ring »

Ikkita JavaScript obyektini taqqoslash har doim false qaytaradi.




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!