Qo'shimcha mavzular

BigInt

Oddiy Number turi taxminan 2**53 dan katta butun sonlarni aniq saqlay olmaydi. BigInt โ€” bu cheklovsiz uzunlikdagi butun sonlar bilan ishlash uchun maxsus raqamli tur.

Muammo: Number chegarasi

Oddiy sonlarda xavfsiz butun sonlar chegarasi bor โ€” Number.MAX_SAFE_INTEGER. Undan tashqarida aniqlik yo'qoladi:

bigint-muammo.js
// natija shu yerda chiqadi

Ikkala qo'shish ham bir xil natija berdi โ€” bu aniqlik yo'qolganidan. Aynan shunday hollarda BigInt kerak.

BigInt yaratish

BigInt ikki usulda yoziladi: son oxiriga n qo'shib yoki BigInt() funksiyasi bilan:

bigint-yaratish.js
// natija shu yerda chiqadi

BigInt bilan qo'shish aniq bo'ladi:

bigint-aniq.js
// natija shu yerda chiqadi

Amallar

BigInt oddiy arifmetik amallarni qo'llab-quvvatlaydi. Faqat bo'lish natijasi butunga yaxlitlanadi (kasr qismi tashlanadi):

bigint-amallar.js
// natija shu yerda chiqadi
Unar plyus (+bigint) BigInt bilan ishlamaydi โ€” u xatolik beradi. Boshqa arifmetik va taqqoslash amallari esa normal ishlaydi.

Number bilan aralashtirmaslik

Eng muhim qoida: BigInt va Numberni bir amalda aralashtira olmaysiz โ€” bu TypeError beradi:

bigint-aralash.js
// natija shu yerda chiqadi
BigIntni Numberga o'tkazganda (Number(katta)) katta qiymatlarda aniqlik yo'qolishi mumkin. Faqat qiymat xavfsiz chegarada bo'lsa o'tkazing.

Taqqoslash va mantiqiy kontekst

Taqqoslashda esa BigInt va Number bemalol aralashadi (qiymatlari solishtiriladi), lekin qat'iy tenglik (===) turni ham tekshiradi:

bigint-taqqoslash.js
// natija shu yerda chiqadi

typeof BigInt uchun alohida qiymat qaytaradi:

bigint-typeof.js
// natija shu yerda chiqadi

Qo'llanilishi

BigInt qachon kerak bo'ladi?

Agar sonlaringiz 2**53 chegarasidan oshib ketmasa, oddiy Number yetarli va tezroq. BigIntni faqat chindan zarur bo'lganda ishlating.

Xulosa