BigInt در JavaScript
- صفحه قبلی عدد JS
- صفحه بعدی روشهای عددی JS
متغیرهای BigInt در JavaScript برای ذخیره اعداد صحیح بزرگی استفاده میشوند که نمیتوانند با اعداد معمولی JavaScript نمایش داده شوند.
دقت اعداد صحیح در JavaScript
اعداد صحیح در JavaScript بیشترین دقت را تا 15 رقم دارند:
دقت اعداد صحیح
let x = 999999999999999; let y = 9999999999999999;
در JavaScript، همه اعداد به صورت فرمت 64 بیتی浮-point (استاندارد IEEE 754) ذخیره میشوند.
بر اساس این استاندارد، اعداد صحیح بزرگتر نمیتوانند به طور دقیق نمایش داده شوند و به صورت تقریبی محاسبه میشوند.
بنابراین، JavaScript فقط میتواند اعداد صحیح در این محدوده را به طور ایمن نمایش دهد:
- بزرگتر از 9007199254740991(253-1)
- کوچکتر از -9007199254740991-(253-1))
اعداد صحیح خارج از این محدوده دقت خود را از دست میدهند.
چگونه BigInt ایجاد کنیم
برای ایجاد BigInt میتوانید عدد را در انتهای آن اضافه کنید n
، یا فراخوانی BigInt()
توابع:
مثال 1
let x = 9999999999999999; let y = 9999999999999999n;
مثال 2
let x = 1234567890123456789012345n; let y = BigInt(1234567890123456789012345);
BigInt: نوع داده جدیدی از JavaScript
نوع JavaScript برای BigInt "bigint
":
مثال
let x = BigInt(999999999999999); let type = typeof x;
BigInt دومین نوع داده عددی در JavaScript است (بعد از Number).
برای BigInt، تعداد کل نوعهای دادهای پشتیبانی شده توسط JavaScript 8 نوع است:
- String
- Number
- Bigint
- Boolean
- Undefined
- Null
- Symbol
- Object
عملگرهای BigInt
پس میتوان از عملگرهای Number در JavaScript برای BigInt نیز استفاده کرد.
مثال بر روی ضرب BigInt
let x = 9007199254740995n; let y = 9007199254740995n; let z = x * y;
توجه:
نمیتوان از BigInt و Number برای عملیات ریاضی استفاده کرد (تبدیل نوع اطلاعات را از دست میدهد).
BigInt نمیتواند عملیات چپرفتاری بدون امتیاز (>>>) را انجام دهد، زیرا عرض ثابت ندارد.
عدد اعشاری BigInt
BigInt نمیتواند عدد اعشاری داشته باشد.
مثال تقسیم BigInt
let x = 5n; let y = x / 2; // خطا: نمیتوان BigInt و سایر نوعها را با هم ترکیب کرد، از تبدیل آشکار استفاده کنید.
let x = 5n; let y = Number(x) / 2;
BigInt به صورت شانزدهسانی، هگزادسانی و دودسانی
BigInt میتواند به صورت شانزدهسانی، هگزادسانی یا دودسانی نوشته شود:
مثال BigInt به صورت شانزدهسانی
let hex = 0x20000000000003n; let oct = 0o400000000000000003n; let bin = 0b100000000000000000000000000000000000000000000000000011n;
Precision Curiosity
راندن ممکن است امنیت برنامه را به خطر بیند:
مثال MAX_SAFE_INTEGER
9007199254740992 === 9007199254740993; // به true تبدیل میشود!!!
پشتیبانی مرورگر
از سپتامبر 2020 به بعد، همه مرورگرها BigInt را پشتیبانی میکنند:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
مай 2018 | ژانویه 2020 | ژوئیه 2019 | سپتامبر 2020 | ژوئن 2018 |
عددهای امن کمترین و بیشترین
ES6 به Number Object ویژگیهای max و min را اضافه کرده است:
MAX_SAFE_INTEGER
MIN_SAFE_INTEGER
مثال MAX_SAFE_INTEGER
let x = Number.MAX_SAFE_INTEGER;
مثال MIN_SAFE_INTEGER
let x = Number.MIN_SAFE_INTEGER;
روشهای عددی جدید
ES6 به Number Object دو روش جدید اضافه کرده است:
Number.isInteger()
Number.isSafeInteger()
روش Number.isInteger()
اگر پارامتر یک عدد باشد، روش Number.isInteger() بازمیگرداند true
.
مثال isInteger()
Number.isInteger(10); Number.isInteger(10.5);
روش Number.isSafeInteger()
اعداد امن اعدادهایی هستند که میتوانند به طور دقیق به عنوان عدد دوگانه نمایش داده شوند.
اگر پارامتر یک عدد امن باشد، روش Number.isSafeInteger() بازمیگرداند true
.
مثال isSafeInteger()
Number.isSafeInteger(10); Number.isSafeInteger(12345678901234567890);
اعداد امن از -(253 از -1) تا +253 تمام اعداد.
این یک عدد امن است: 9007199254740991. این یک عدد امن نیست: 9007199254740992.
- صفحه قبلی عدد JS
- صفحه بعدی روشهای عددی JS