ما نوع الرقم الموجود في JS؟

إذا كنت قد درست اللغات المكتوبة بقوة ، فيجب أن تفهم أنه يجب تخزين قيمة معينة في الذاكرة مع تخصيص عدد من البايتات لها مسبقًا. على سبيل المثال ، يتم int تخصيص 4 بايت لرقم  يساوي 32 بت ويمكن أن يحتوي على قيم 2³² ، مما يعني أنه يمكننا التعبير في النظام العشري من -2 147483 647 إلى 2147483 647. ما هو نوع الرقم المستخدم في JS؟

ينص معيار EcmaScript على أن قيمة الرقم: قيمة أولية تتوافق مع قيمة IEEE 754 ذات تنسيق ثنائي بدقة 64 بت. أي رقم double ( رقم  دقيق مزدوج) يحتل 8 بايت = 64 بت (منها 1 بت مخصصة للإشارة إلى علامة رقم ، 11 بت للترتيب و 52 - الجزء العشري ، كل شيء بعد الفاصلة العشرية).

تخصيص البتات لتمثيل مزدوج
تخصيص البتات لتمثيل مزدوج

نطاق القيمة: 1.7E +/- 308 (15 رقمًا). يمكنك التحقق من هذا الرقم ورؤيته بالكامل عن طريق طباعة العدد الأقصى المسموح به لكائن الرقم في وحدة التحكم.  Number.MAX_VALUEهنا رابط لمعيار IEEE754: https://en.wikipedia.org/wiki/IEEE_754 إذا تجاوزت هذا الرقم ، فسيعطينا  الرقم قيمة  Infinity...

الحد الأقصى لقيمة النقطة العائمة المزدوجة
الحد الأقصى لقيمة النقطة العائمة المزدوجة

,  double?

: 9,007,199,254,740,991 ~9 . , . Number: Number.MAX_SAFE_INTEGER.

, , :

مقارنة الأرقام الأكبر من الحد الأقصى المسموح به لعدد صحيح.  رياضيا ، هذه ليست قيمًا متساوية ، لكننا سنعود صحيحًا.
, . , true.

,  isSafeInteger():

التحقق مما إذا كان الرقم آمنًا

, ,  double. , ? , , ,  int  4 , 8! , V8 Number:

فئات مختلفة للأرقام.  عدد صحيح يرث من الرقم
. Integer Number

, .  int  int32  Uint32 ( ±),  BigIntInteger   NumberInt32  Uint32   Integer.

gitHub': https://github.com/v8/v8/blob/master/include/v8.h#L3039

V8 C++ 4 . , V8 double 8 . , , .

قمنا بتغيير نوع المتغير ديناميكيًا لـ V8
V8

Performance Tip for JS in v8 Chris Wilsonhttps://www.html5rocks.com/en/tutorials/speed/v8/

. JS — , API . ,  window.setTimeout(). JavaScript. setTimeout  int32, , 2 147 483 647, 9 .  setTimout()  2 147 483 648 ( 1  Int32), . JS . .

P.S. , setTimeout 25 . , .

شكرًا لكم جميعًا ، اشترك في صفحة VK وانضم إلى مجموعتنا من المعجبين بتطوير الواجهة الأمامية




All Articles