JavaScript – اعداد بزرگ (BigInt)

متغیرهای BigInt در جاوااسکریپت برای ذخیره مقادیر عددی بسیار بزرگ استفاده می‌شوند که نمی‌توان آن‌ها را با نوع عددی عادی (Number) نمایش داد.

دقت اعداد صحیح در جاوااسکریپت

اعداد صحیح در جاوااسکریپت فقط تا 15 رقم دقت دارند:

مثال دقت اعداد صحیح:

let x = 999999999999999;   // صحیح
let y = 9999999999999999;  // دقت از دست می‌رود

در جاوااسکریپت، تمامی اعداد با استفاده از فرمت 64-بیتی floating-point (استاندارد IEEE 754) ذخیره می‌شوند.
این استاندارد باعث می‌شود که اعداد بزرگ به درستی نمایش داده نشوند و گرد شوند.

محدوده‌ی امن اعداد صحیح:

جاوااسکریپت فقط می‌تواند اعداد صحیح را تا این مقادیر دقیق نمایش دهد:

  • بالاترین مقدار امن: 9007199254740991
  • کمترین مقدار امن: -9007199254740991

اعداد خارج از این بازه دقت خود را از دست می‌دهند.

چگونه یک BigInt ایجاد کنیم؟

برای ایجاد یک مقدار BigInt، کافی است n را به انتهای یک عدد اضافه کنید یا از تابع BigInt() استفاده کنید:

مثال:

let x = 9999999999999999n;            // با افزودن n
let y = BigInt(123456789012345678901); // با استفاده از تابع

BigInt: یک نوع داده‌ی جدید در جاوااسکریپت

نوع داده‌ی BigInt در جاوااسکریپت معرفی شده و نوع آن به صورت زیر است:

مثال:

let x = BigInt(9999999999999999);
console.log(typeof x);  // "bigint"

عملگرهای قابل استفاده در BigInt

تمام عملگرهای ریاضی که روی نوع Number استفاده می‌شوند، روی BigInt نیز قابل استفاده‌اند.

مثال: ضرب BigInt

let x = 9007199254740995n;
let y = 9007199254740995n;
let z = x * y;  // نتیجه: BigInt

محدودیت‌ها:

  • نمی‌توان عملیات ریاضی را بین یک BigInt و یک Number ترکیب کرد.
  • عملیات شیفت بدون علامت (>>>) روی BigInt امکان‌پذیر نیست.

BigInt و اعداد اعشاری

مقادیر BigInt نمی‌توانند اعشار داشته باشند.

مثال تقسیم BigInt

let x = 5n;
let y = x / 2n;  // نتیجه: 2n

BigInt در مبناهای مختلف

می‌توانید BigInt را در مبناهای شانزده‌شانزدهی (Hex)، اکتال (Octal) و باینری (Binary) نیز نمایش دهید:

مثال:

let hex = 0x20000000000003n;  // مبنای 16
let oct = 0o400000000000000003n; // مبنای 8
let bin = 0b100000000000000000000000000000000000000000000000000011n; // مبنای 2

کنجکاوی دقت

گرد کردن می‌تواند برنامه‌ها را دچار خطا کند:

مثال

console.log(9007199254740992 === 9007199254740993);  // نتیجه: true!

اعداد امن در جاوااسکریپت

ES6 دو ویژگی جدید به شیء Number اضافه کرده است:

  1. MAX_SAFE_INTEGER: بزرگ‌ترین عدد صحیح امن
  2. MIN_SAFE_INTEGER: کوچک‌ترین عدد صحیح امن

مثال:

let max = Number.MAX_SAFE_INTEGER;  // 9007199254740991
let min = Number.MIN_SAFE_INTEGER;  // -9007199254740991

متدهای جدید عددی

ES6 دو متد جدید نیز اضافه کرده است:

Number.isInteger()

بررسی می‌کند که آیا مقدار یک عدد صحیح است یا خیر:

console.log(Number.isInteger(10));   // true
console.log(Number.isInteger(10.5)); // false

Number.isSafeInteger()

بررسی می‌کند که آیا عدد در بازه امن قرار دارد یا خیر:

console.log(Number.isSafeInteger(10));               // true
console.log(Number.isSafeInteger(12345678901234567890)); // false

اعداد امن تمامی اعداد صحیح بین -9007199254740991 و +9007199254740991 هستند.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.