بیشتر عملگرهایی که برای اعداد معمولی (Number) استفاده میشوند، برای مقادیر BigInt نیز قابل استفاده هستند.
// جمع با مقادیر BigInt
const a = 1n + 2n; // 3n
// تقسیم در BigIntها نتیجه را به سمت صفر گرد میکند
const b = 1n / 2n; // 0n
// عملیاتهای بیتی با BigIntها هیچکدام از طرفین را قطع (Truncate) نمیکنند
const c = 40000000000000000n >> 2n; // 10000000000000000n
یک استثنا در این میان، عملگر شیفت به راست بدون علامت (>>>) است که برای مقادیر BigInt تعریف نشده است. دلیل آن این است که یک مقدار BigInt طول یا عرضِ بیتِ ثابتی ندارد، بنابراین از نظر فنی چیزی به نام «بالاترین بیت» (Highest bit) در آن معنا ندارد.
const d = 8n >>> 2n; // TypeError: BigInts have no unsigned right shift, use >> instead
مقادیر BigInt و اعداد معمولی (Number) به جای یکدیگر قابل استفاده نیستند و شما نمیتوانید آنها را در محاسبات با هم ترکیب کنید.
const a = 1n + 2; // TypeError: Cannot mix BigInt and other types
دلیل این موضوع آن است که BigInt نه زیرمجموعه و نه ابرمجموعهای از اعداد معمولی است. مقادیر BigInt هنگام نمایش اعداد صحیحِ بزرگ، دقت بالاتری نسبت به اعداد معمولی دارند، اما نمیتوانند اعداد ممیز اعشاری را نشان دهند؛ بنابراین، تبدیل پنهان (Implicit conversion) در هر لایه ممکن است باعث از دست رفتن دقت محاسبات شود. برای اینکه مشخص کنید دوست دارید عملیات شما یک محاسبات عددی معمولی باشد یا یک محاسبات بیگیاینت، باید از تبدیل صریح (Explicit conversion) استفاده کنید:
const a = Number(1n) + 2; // 3 (محاسبه به صورت عدد معمولی)
const b = 1n + BigInt(2); // 3n (محاسبه به صورت بیگاینت)
با این حال، شما میتوانید مقادیر BigInt را با اعداد معمولی مقایسه کنید:
const a = 1n > 2; // false
const b = 3 > 2n; // true
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript