تتكوّن قيمة الرقم من أي سلسلة من الأحرف الرقمية، على سبيل المثال:
5
يتضمن نوع بيانات الأرقام أيضًا بعض السمات العامة الخاصة التي تمثل المفاهيم الرقمية، مثل Infinity
وNaN
، وهي قيمة تعني "ليست رقمًا"، وهي نتيجة محتملة لمحاولة إجراء عمليات حسابية رياضية على قيم غير رقمية.
كائن الرقم
عند تمرير قيمة إلى الدالة Number()
، يتم تحويلها إلى
الرقم المكافئ. على سبيل المثال، ينتج عن السلسلة الرقمية
رقم أساسي مكافئ:
Number( "10" );
> 10
يؤدي تمرير قيمة false
أو null
إلى Number()
إلى عرض 0
، وعرض true
1
.
Number( null );
> 0
Number( false );
> 0
Number( true );
> 1`
إذا تعذّر تحويل قيمة، كما في حالة undefined
أو سلسلة تحتوي على أحرف غير رقمية، تعرض الدالة Number
القيمة NaN
:
Number( undefined );
> NaN
Number( "The number 3." );
> NaN
كما هو موضح بالتفصيل في مقالة توريث النموذج الأولي،
من المحتمل أن لا يكون هناك سبب وجيه لاستخدام الكائن Number
كدالة إنشائية، لأنه ينشئ كائن Number
كائن بدلاً من قيمة حرفية للعدد.
let numObject = new Number( 15 );
numObject;
> Number { 15 }
يعمل هذا الكائن كقيمة مخصصة للعمليات الرياضية، لكنه يفشل في مقارنات مساواة صارمة مقابل القيم الحرفية لأن أنواع البيانات غير متطابقة، دون تقديم أي فائدة عملية على القيمة الحرفية.
let tenObject = new Number( 10 );
tenObject + 5;
> 15
tenObject === 10;
> false
الأعداد العشرية والأعداد الصحيحة
تتضمّن JavaScript نوع أرقام واحدًا فقط هو أعداد النقاط العائمة ذات الدقة المزدوجة IEEE 754-1985 بين -2^1024
و2^1024
. قبل أن يخزّن JavaScript أي رقم في الذاكرة، يتم أولاً تحويل هذا الرقم إلى رقم ثنائي النقطة العائمة، ويُعرف أيضًا باسم float.
يمكن أن تحدث أخطاء 64 بت في وحدة التخزين 64 بت (وحدة بت "علامة" موجبة أو سالبة و11 بت لكل أس و52 بت للكسر) أخطاء في الدقة في أي عدد من الأرقام لا يتناسب مع النطاق المسموح به. هذا القيد متأصل في نوع بيانات أرقام JavaScript.
0.1 + 0.7
> 0.7999999999999999
بدلاً من ذلك، يمكن تخزين قيمة رقم على شكل عدد صحيح، وهو رقم فاصل عائم
بدون كسر بين -(2^53 − 1)
و2^53 − 1
. نظرًا لتخزين الأعداد العشرية والأعداد الصحيحة بنفس الطريقة الأساسية، لا يوجد اختلاف عملي في طريقة عمل هذه الأرقام. ومع ذلك، نوصي باستخدام الأرقام الصحيحة كلما أمكن ذلك لتجنب أخطاء الدقة.
عوامل تشغيل الأرقام
عند استخدام عوامل حسابية معيارية مع أساسيات الأعداد، يسري الترتيب الرياضي للعمليات الذي يتم فيه تقييم أي تعبيرات ملفوفة بين قوسين أولاً، متبوعة بالأُسس والضرب والقسمة والجمع والطرح.
مُشغِّل | الاسم | الوصف | الاستخدام | النتيجة |
---|---|---|---|---|
+ |
الجمع | 2+2 |
4 |
|
- |
الطرح | 4-2 |
2 |
|
* |
الضرب | 2*5 |
10 |
|
/ |
القسم | 10/5 |
2 |
|
++ |
زيادة | إضافة رقم واحد إلى رقم | 2++ |
3 |
-- |
تناقص | طرح واحد من عدد | 3-- |
2 |
** |
أُسّ | تعرض نتيجة رفع معامل الأول إلى أُس المعامل الثاني. |
2**4 |
16 |
% |
المتبقي | تعرض الباقي المتبقي عند قسمة المعامل الأول على المعامل الثاني. |
12%5 |
2 |
يمكنك أيضًا استخدام عوامل التعيين الرياضية لإجراء عملية حسابية على قيمة متغير وتعيين هذه القيمة المحسوبة حديثًا إلى المتغير على الفور.
مُشغِّل | الاسم | الاستخدام |
---|---|---|
+= |
إضافة مهمة | myValue += 2 |
-= |
عملية الطرح | myValue -= 2 |
*= |
مهمة الضرب | myValue *= 2 |
/= |
مهمة القسم | myValue /= 2 |
**= |
تعيين الأس | myValue **= 2 |
%= |
التعيين المتبقي | myValue %= 2 |
القيم الرمزية
ينطبق العدد الأولي أيضًا على بعض الحالات الخاصة: قيمة "ليس رقمًا" (NaN
) وقيمة تمثّل اللانهاية يمكن أن تكون إما موجبة (Infinity
) أو سالبة (-Infinity
).
قد تصادف Infinity
نادرًا نتيجة القسمة على صفر، وهي حالة تعرض فيها معظم لغات البرمجة خطأً بدلاً من ذلك:
10 / 0
> Infinity
تذكر أن لغة JavaScript حساسة لحالة الأحرف. Infinity
هو نوع بيانات رقمي يمثل مفهوم اللانهاية، لكن infinity
ليس له معنى خاص:
Infinity
> Infinity
infinity
> Uncaught ReferenceError: infinity is not defined
يظهر NaN
(أي "ليس رقمًا")
بشكل أكثر تكرارًا في الحالات التي يتعذّر فيها التعبير عن نتيجة عملية حسابية كرقم. على سبيل المثال، نظرًا لأن JavaScript تحاول استنتاج نوع البيانات من القيمة والسياق، يمكن استخدام سلسلة حرفية تحتوي على رقم فقط في العملية الحسابية:
"2" * 2;
> 4
ومع ذلك، إذا تعذر تحليل هذه السلسلة كقيمة رقم، فإن العملية الحسابية ينتج عنها قيمة غير رقم:
"two" * 2;
> NaN
يتم عرض NaN
في أي حالة يتم فيها تمثيل قيمة غير صالحة كرقم
في عملية رياضية. وتشمل الأمثلة ما يلي:
- تعذّر احتساب الإحالات الناجحة حسب رقم (على سبيل المثال،
parseInt( undefined )
) - العمليات الحسابية التي لا تكون فيها النتيجة رقمًا حقيقيًا (مثل،
0 / 0
وMath.sqrt( -10 )
) - عملية حسابية مع نتيجة غير محددة (
0 * Infinity
) - عملية حسابية تتضمّن قيمة
NaN
(NaN + 2
) واضحة أو نتيجةNaN
(2 * "string" / 2
)
التحقق من فهمك
ما هي نتيجة تمرير false
إلى Number()
؟
ما هي نتيجة العملية الحسابية التالية؟
"Six" * 3