در جاوااسكريپت متغيرهايBigInt براي ذخيره سازي اعداد صحيح بزرگ پيش بيني شده كه نسبت به اعداد معمولي آن بسيار بزرگ تراست.
مثال ـ نمايش دقت اعداد صحيح
let x = 999999999999999; let y = 9999999999999999;
در جاوااسكريپت تمام اعداد در قالب مميز شناور 64بيتي ذخيره ميشوند .طبق استانداردIEEE 754
بااين استاندارد عدد صحيح بزرگ را نمي توان نشان داد، آنها گرد ميشوندودقيق نيستند.
جاوااسكريپت فقط با اين استاندارد اعداد بين محدوده زيرا را بادقت پشتياني نمايد.
براي ايجاد عدد صحيخ بزرگ حرفn را انتهاي عدد قرار داده يا BigInt() را فراخوان ميكنيم.
let x = 9999999999999999; let y = 9999999999999999n;
let x = 1234567890123456789012345n; let y = BigInt(1234567890123456789012345)
اگر باtypeof نوع دادهBigInt ارزيابي كنيم نتيچه"bigint"ميباشد.
مثال ـ ارزيابي اعداد بزرگ
let x = BigInt(999999999999999); let type = typeof x;
BigIntدومين نوع داده عددي بعدازnumeric در جاوااسكريپت است.
باBigInt در جاوااسكريپت در مجموع هشت نوع داده وجود دارد :
عملياتي كه در جاوااسكريپت روي اعداد صحيح انجام مي دهيد، ميتوان روي اعداد بزرگ هم انجام داد
مثال ـ نمونه ضرب اعداد بزرگ
let x = 9007199254740995n; let y = 9007199254740995n; let z = x * y;
نكات ـ محاسبات مابينBigInt , Number مجاز نيست، چون در تبديل نوع داده اطلاعات از دست ميرود.
شيفت بسمت راست بدون علامت(>>>) روي اعداد بزرگ امكان پذير نيست، آنها داراي طول ثابتي نميباشند.
يگBigInt نمي تواند داراي نقطه اعشاري باشد .
مثال ـ تقسيم اعداد بزرگ
let x = 5n; let y = x / 2; // Error: Cannot mix BigInt and other types, use explicit conversion.
let x = 5n; let y = Number(x) / 2;
اعداد بزرگ را در مبناي هاي16 , 8 ,2 ميتوان با علائم آنها در جاوااسكريپت نوشت .
مثال ـ اعداد بزرگ در مبناي هاي ذكر شده
let hex = 0x20000000000003n; // hex let oct = 0o400000000000000003n; // octal let bin = 0b100000000000000000000000000000000000000000000000000011n; // binary
گرد كردن اعداد ميتواند امنيت برنامه را بخطر بيندازد.
مثال ـMAX_SAFE_INTEGER بزرگترين عدد با امنيت
9007199254740992 === 9007199254740993; // is true !!!
BigIntدر سپتامبر2020 همه مرورگرها ازآن پشتيباني ميكنند .
67.0
May 2018 | 79.0
Jan 2020 | 68.0
Jul 2019 | 14.0
Sep 2020 | 54.0
Jun 2018 |
ES6ويژگي هاي ماكزيمم و مينيمم براي شئ عددي اضافه كرده است .مطابق زير
مثال ـMAX_SAFE INTEGER
let x = Number.MAX_SAFE_INTEGER;
توجه ـ شئNumber شناخته شده در جاوااسكريپت براي اعداد است .
مثال ـMIN_SAFE INTEGER
let x = Number.MIN_SAFE_INTEGER;
همچنينES6 دو متد جديد براي اعداد اضافه كرده است .مطابق زير:
متد Number.isinteger() ، درصورتيكه آرگومان تابع عددصحيح باشد نتيجهtrue برگشت ميدهد .
مثال ـisInteger()
Number.isInteger(10); Number.isInteger(10.5);
يك عدد صحيح بي خطر ميتواند بصورت عدد با دقت مضاعف نمايش داده شود .در صورتيكه عدد آرگومان تابع فوق قرار گيرد ، نتيجه آنtrue است .
مثال ـisSafeInteger()
Number.isSafeInteger(10); Number.isSafeInteger(12345678901234567890);
همه اعداد صحيح كه بين-(253-1) و (253-1)است بدون خطر ميباشند . عدد900719925470991 ايمن و 900719925470992 ناامن است .