جميع الأرقام في JavaScript ، سواء أكان الأعداد الصحيحة أو العشرية ، هي من نوع النوع. داخل البرنامج ، يكون جوهر نوع الرقم هو رقم نقطة عائم 64 بت ، وهو ما يتوافق مع رقم النقطة العائمة للنوع المزدوج في Java ؛ لذلك ، فإن جميع الأرقام في جافا سكريبت هي أرقام نقاط عائمة. بعد معيار IEEE 754 (معيار الحساب النقطة العائمة) ، فإن نطاق القيم التي يمكن أن تمثلها JavaScript هي زائد أو ناقص 1.7976931348623157 مرة 10 إلى قوة 308 سمة min_value لكائن الرقم على التوالي.
بالنسبة للأعداد الصحيحة ، وفقًا لمتطلبات معيار ECMASCRIPT (http://ecma262-5.com/els5_html.htm#section_8.5) ، فإن نطاق الأعداد الصحيحة التي يمكن أن تمثلها JavaScript وتؤدي العمليات الحسابية الدقيقة: إلى قوة 53 من زائد أو ناقص 2. القيمة القصوى +9007199254740992 ؛ بالنسبة للأعداد الصحيحة التي تتجاوز هذا النطاق ، لا يزال بإمكان JavaScript إجراء عمليات ، ولكنه لا يضمن دقة نتائج الحساب. تجدر الإشارة إلى أنه بالنسبة لعمليات بت عدد صحيح (مثل التحول والعمليات الأخرى) ، تدعم JavaScript فقط أرقام عدد صحيح 32 بت ، أي أعداد صحيحة من -2147483648 إلى +2147483647.
تجربة
يعرض القيمة المطلقة للرقم الأقصى والقيمة المطلقة للحد الأدنى من الرقم العشري في JavaScript:
نسخة الكود كما يلي:
console.log (number.max_value) ؛
console.log (number.min_value) ؛
النتائج هي 1.7976931348623157e+308 و 5E-324.
لا يمكن لـ JavaScript إعطاء نتيجة حسابية دقيقة للأعداد الصحيحة خارج قوة 53 من Plus أو Minus 2:
نسخة الكود كما يلي:
var a = 9007199254740992 ؛
console.log (A+3) ؛
يجب أن تكون نتيجة الحساب الصحيحة 9007199254740995 ، ولكن نتيجة الحساب التي قدمها JavaScript هي 9007199254740996. بعد محاولة تغيير صيغة الحساب ، يمكنك أن تجد أنه ما دام عدد صحيح أكبر من 9007199254740992 ، فإن الأخطاء في هذا الحسبان ستردد. إذا كان الانحراف في دقة الحساب مقبولة ، فستكون عواقب المثال التالي أكثر جدية:
نسخة الكود كما يلي:
var max_int = 9007199254740992 ؛
لـ (var i = max_int ؛ i <max_int +2 ؛ ++ i) {
// حلقة لانهائي
}
بسبب مشكلات دقة الحساب ، فإن ما سبق للبيان سوف يقع في حلقة ميتة.
لعمليات البتات ، تدعم JavaScript فقط أرقام عدد صحيح 32 بت:
نسخة الكود كما يلي:
var smallint = 256 ؛
var bigint = 2200000000 ؛
console.log (smallint / 2) ؛
console.log (smallint >> 1) ؛
console.log (bigint / 2) ؛
console.log (bigint >> 1) ؛
يمكن أن نرى أنه بالنسبة للمناسبات الأعداد الصحيحة في حدود 32 بت (256) ، يمكن لـ JavaScript إجراء عمليات بت صحيحة ، والنتيجة تتفق مع نتيجة عملية التقسيم (128). بالنسبة للأعداد الصحيحة بخلاف 32 بت ، يمكن لـ JavaScript إجراء عمليات التقسيم الصحيحة (1100000000) ، ولكن النتائج التي تم الحصول عليها بعد إجراء عمليات بت ليست بعيدة عن النتائج الصحيحة (-1047483648).