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 در مبناهای مختلف
let hex = 0x20000000000003n; // مبنای 16
let oct = 0o400000000000000003n; // مبنای 8
let bin = 0b100000000000000000000000000000000000000000000000000011n; // مبنای 2
کنجکاوی دقت
گرد کردن میتواند برنامهها را دچار خطا کند:
مثال
console.log(9007199254740992 === 9007199254740993); // نتیجه: true!
اعداد امن در جاوااسکریپت
ES6 دو ویژگی جدید به شیء Number اضافه کرده است:
MAX_SAFE_INTEGER
: بزرگترین عدد صحیح امن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 هستند.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام