Skip to content

JavaScript BigInt

BigInt — bu JavaScript-da juda katta butun sonlarni (integer) saqlash va ular bilan ishlash uchun mo'ljallangan maxsus ma'lumot turi.

BigInt sizga Numbers (Oddiy sonlar) turining limitidan katta bo'lgan sonlar bilan ishlash imkonini beradi. U xotira imkoniyatiga qarab har qanday kattalikdagi sonni ifodalashi mumkin.


JavaScript-da Aniqlik Muammosi

JavaScript-ning oddiy sonlari (Number) faqat 15 xonagacha aniq hisoblanadi:

Misol

js
// 15 xona:
let x = 999999999999999;  // Aniq

// 16 xona:
let y = 9999999999999999; // Noaniq (Yaxlitlab yuboradi)

Nega BigInt Kerak?

Barcha JavaScript sonlari 64-bitli floating-point formatida (IEEE 754) saqlanadi. Ushbu standartda juda katta sonlarni aniq tasvirlab bo'lmaydi, ular yaxlitlanadi.

JavaScript faqat quyidagi oraliqdagi sonlarni "xavfsiz" (aniq) ifodalay oladi:

  • Eng katta: 253-1 (9007199254740991)
  • Eng kichik: -(253-1) (-9007199254740991)

Ushbu limitlardan tashqaridagi butun sonlar o'z aniqligini yo'qotadi. Buning yechimi esa — BigInt.


BigInt Yaratish

BigInt yaratishning ikkita usuli bor:

  1. Son oxiriga n qo'shimchasini qo'shish.
  2. BigInt() konstruktoridan foydalanish (asosan matnlar bilan).

Misol

js
// "n" qo'shimchasi bilan:
let x = 9999999999999999n;

// BigInt() konstruktori bilan:
let y = BigInt("9999999999999999");

BigInt Ma'lumot Turi

BigInt alohida ma'lumot turi hisoblanadi. typeof operatori u uchun "bigint" qaytaradi:

js
let x = 12345n;
typeof x; // "bigint"

JavaScript-dagi jami 8 ta ma'lumot turi:

  1. String
  2. Number
  3. BigInt
  4. Boolean
  5. Undefined
  6. Null
  7. Symbol
  8. Object

Arifmetik Amallar

BigInt standart arifmetik operatorlarni qo'llab-quvvatlaydi: +, -, *, /, %, **

js
let x = 10000000000000000n;
let y = 2n;
let z = x * y; // 20000000000000000n

BigInt va Oddiy Sonlarni Aralashtirish

Diqqat

BigInt va oddiy sonlar (Number) o'rtasida to'g'ridan-to'g'ri arifmetik amallar bajarishga ruxsat berilmaydi. Bu TypeError xatosini keltirib chiqaradi.

Amalni bajarish uchun avval ulardan birini boshqasiga aylantirish kerak:

js
let x = 10n;
let y = 5;

// let z = x + y; // ❌ TypeError xatosi

let z = Number(x) + y; // ✅ To'g'ri (lekin katta sonlarda ehtiyot bo'ling)

Solishtirish Operatorlari

BigInt va oddiy sonlarni bir-biri bilan solishtirish mumkin:

js
10n > 5;   // true
10n == 10;  // true
10n === 10; // false (chunki turlari har xil)

Xulosa

  • BigInt ixtiyoriy aniqlikdagi butun sonlar uchun ishlatiladi.
  • Ular xotira ruxsat bergancha katta bo'lishi mumkin.
  • Odatda kriptografiya, katta ID-lar va vaqt tamg'alari (timestamps) uchun qo'llaniladi.
  • BigInt-da o'nli kasrlar (decimals) bo'lmaydi.
  • Math obyektining funksiyalari (masalan, Math.sqrt()) BigInt bilan ishlamaydi.