تتكوّن قيمة الرقم من أي سلسلة من الأحرف الرقمية، على سبيل المثال:
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 64 بت
أرقام النقطة العائمة بين
-2^1024
و2^1024
قبل أن تخزّن لغة JavaScript أي رقم في الذاكرة، يجب أولاً
لتحويل هذا الرقم إلى رقم ثنائي النقطة العائمة، ويسمى أيضًا عدد عشري.
وحدة التخزين هذه بنظام 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