حساب با اعداد بزرگ

حساب با اعداد بزرگ در جاوااسکریپت

در دنیای برنامه‌نویسی، کار با اعداد بزرگ یکی از چالش‌های رایج است. زمانی که با مقادیر بسیار بزرگ (بیش از ۱۵ رقم) سر و کار داریم، محدودیت‌های نوع داده‌ای Number در جاوااسکریپت می‌تواند مشکلاتی ایجاد کند.

حداکثر مقدار ایمن برای اعداد در جاوااسکریپت 9007199254740991 (معروف به Number.MAX_SAFE_INTEGER) است. مقادیر بالاتر از این ممکن است دقت خود را از دست بدهند.

راهکارهای مدیریت اعداد بزرگ

برای حل این مشکل، چندین روش وجود دارد که در ادامه به بررسی آن‌ها می‌پردازیم:

  • استفاده از کتابخانه‌های تخصصی مانند BigInt
  • ذخیره‌سازی اعداد به صورت رشته (String)
  • تقسیم اعداد به بخش‌های کوچکتر
روش مزایا معایب
BigInt پشتیبانی داخلی در جاوااسکریپت عدم سازگاری با برخی عملیات ریاضی
رشته‌ها عدم محدودیت در اندازه پیچیدگی در عملیات ریاضی

پیاده‌سازی BigInt

در ES2020، نوع داده BigInt به صورت رسمی به جاوااسکریپت اضافه شد. برای ایجاد یک عدد بزرگ می‌توانید از روش‌های زیر استفاده کنید:

  1. اضافه کردن حرف n به انتهای عدد: 12345678901234567890n
  2. استفاده از تابع سازنده: BigInt("12345678901234567890")

برای یادگیری عمیق‌تر درباره کار با اعداد در جاوااسکریپت، می‌توانید اینجا را مطالعه کنید.


مثال‌های عملی

در اینجا چند نمونه از عملیات با اعداد بزرگ را مشاهده می‌کنید:

جمع دو عدد بزرگ:

const x = 12345678901234567890n;

const y = 98765432109876543210n;

console.log(x + y); // 111111111011111111100n

توجه داشته باشید که نمی‌توان اعداد معمولی را مستقیماً با BigInt جمع زد و باید ابتدا آن‌ها را تبدیل کنید:

console.log(5n + BigInt(3)); // 8n