BigInt في JavaScript
- الصفحة السابقة رقم JS
- الصفحة التالية طرق الرقمية لـ JS
يستخدم متغير BigInt في JavaScript لتحديد القيم الكبيرة التي لا يمكن تمثيلها باستخدام أرقام JavaScript العادية.
دقة العدد الصحيح في JavaScript
يمكن للعدد الصحيح في JavaScript أن يكون دقيقاً فقط حتى 15 رقماً:
دقة العدد الصحيح
let x = 999999999999999; let y = 9999999999999999;
في JavaScript، يتم تخزين جميع الأرقام بتنسيق 64 بت من نوع floating-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
نوع BigInt في JavaScript هو "bigint
":
مثال
let x = BigInt(999999999999999); let type = typeof x;
BigInt هو النوع الثاني من أنواع البيانات العددية في JavaScript (بعد Number).
بالنسبة لـ BigInt،عدد أنواع البيانات التي يدعمها JavaScript يبلغ 8 أنواع:
- String
- Number
- Bigint
- Boolean
- Undefined
- Null
- Symbol
- Object
عمليات BigInt
المعمل على علامات الجبر يمكن استخدامه مع JavaScript Number.
مثال على ضرب 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; // صحيح!!!
دعم المتصفحات
من أيلول/سبتمبر 2020، دعمت جميع المتصفحات BigInt:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
حزيران/يونيو 2018 | كانون الثاني/يناير 2020 | تموز/يوليو 2019 | أيلول/سبتمبر 2020 | حزيران/يونيو 2018 |
أكبر وأصغر عدد آمن
أضاف ES6 أيضًا خصائص 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.isInteger()
Number.isSafeInteger()
طريقة Number.isInteger()
إذا كان المعامل عدد صحيحاً، فإن طريقة Number.isInteger() تعود صحيح
.
مثال isInteger()
Number.isInteger(10); Number.isInteger(10.5);
طريقة Number.isSafeInteger()
العدد الآمن هو عدد يمكن تمثيله بدقة كعدد ثنائي
إذا كان المعامل عدد آمناً، فإن طريقة Number.isSafeInteger() تعود صحيح
.
مثال isSafeInteger()
Number.isSafeInteger(10); Number.isSafeInteger(12345678901234567890);
العدد الآمن هو من -253 من -1) إلى +253 كل الأعداد الصحيحة.- 1)
هذا هو عدد آمن: 9007199254740991. هذا ليس عدد آمن: 9007199254740992.
- الصفحة السابقة رقم JS
- الصفحة التالية طرق الرقمية لـ JS