BigInt

1️⃣ تعریف BigInt
BigInt یک نوع داده جدید در جاوااسکریپت است که برای نمایش و کار با اعداد خیلی بزرگ استفاده می‌شود، بزرگ‌تر از Number.MAX_SAFE_INTEGER.

  • اعداد BigInt می‌توانند هر اندازه‌ای بزرگ باشند بدون از دست رفتن دقت.

2️⃣ ایجاد BigInt

روشمثالتوضیح
اضافه کردن n به انتهای عدد123456789012345678901234567890nتعریف BigInt مستقیم
استفاده از تابع ()BigIntBigInt("12345678901234567890")تبدیل رشته یا عدد به BigInt

مثال‌ها:

const big1 = 123456789012345678901234567890n; const big2 = BigInt("987654321098765432109876543210"); console.log(big1 + big2); // 1111111110111111111011111111100n

3️⃣ عملیات ریاضی با BigInt

عملیاتمثالتوضیح
جمعa + bجمع دو BigInt
تفریقa - bتفریق دو BigInt
ضربa * bضرب دو BigInt
تقسیمa / bتقسیم دو BigInt (نتیجه گرد شده به پایین)
باقیماندهa % bباقی‌مانده تقسیم

مثال‌ها:

let x = 10000000000000000000n; let y = 3n; console.log(x / y); // 3333333333333333333n console.log(x % y); // 1n

⚠️ توجه: نمی‌توان BigInt و Number را مستقیماً با هم جمع یا ضرب کرد. باید نوع‌ها یکسان شوند.

4️⃣ مقایسه BigInt با Number

مثالتوضیح
100n > 50true → مقایسه صحیح
100n === 100false → نوع‌ها متفاوتند
100n == 100true → مقایسه غیر سخت‌گیرانه (type coercion)


5️⃣ توابع و متدهای مرتبط با BigInt

  • BigInt.asIntN(bits, bigint) → محدود کردن BigInt به تعداد بیت مشخص (Signed)

  • BigInt.asUintN(bits, bigint) → محدود کردن BigInt به تعداد بیت مشخص (Unsigned)

مثال:

let bi = 500n; console.log(BigInt.asIntN(8, bi)); // 244n console.log(BigInt.asUintN(8, bi)); // 244n

6️⃣ نکات مهم

  • BigInt بزرگ‌تر از Number.MAX_SAFE_INTEGER را با دقت کامل نگه می‌دارد.

  • نمی‌توان متدهای toFixed(), toPrecision(), toExponential() را روی BigInt استفاده کرد.

  • تبدیل به رشته با ()toString امکان‌پذیر است:

let big = 12345678901234567890n; console.log(big.toString()); // "12345678901234567890"
  • عملیات ریاضی بین BigInt و Number باید با تبدیل نوع انجام شود:

let n = 10; let big = 20n; console.log(big + BigInt(n)); // 30n