يوجد في JavaScript نوعان مختلفان من الأعداد: الأعداد و"bigints".
الأعداد هي الأكثر استخدامًا، وهي تمثّل نوع البيانات الرقمي بصيغة الفاصلة العائمة ذات الدقة المزدوجة 64 بت.
number: نوع بيانات رقمي بصيغة الفاصلة العائمة ذات الدقة المزدوجة 64 بت (IEEE 754).
أمثلة على ذلك -6، -2.4، 0، 0.1، 1، 3.14، 16.984025، 25، 976، 1024.0 و500000.bigint: نوع بيانات رقمي يمكنه تمثيل الأعداد الصحيحة بصيغة الدقة التعسفية.
أمثلة على ذلك -12n، 0n، 4n و9007199254740991n.let numericValue = 42;
// => 42
القيمة الحرفية للعدد مثل 42 في كود JavaScript هي قيمة فاصلة عائمة، وليست عددًا صحيحًا.
لا يوجد نوع منفصل للأعداد الصحيحة قيد الاستخدام اليومي الشائع.
والنوع bigint ليس مصممًا ليحل محل النوع number في الاستخدامات اليومية.
لا يزال 42 من نوع Number وليس BigInt.
يمكن أيضًا كتابة الأعداد بصيغ حرفية مثل 0b101 و0o13 و0x0A. تعرّف على المزيد حول القواعد المعجمية للأعداد هنا.
تشير صيغة E إلى عدد ينبغي ضربه في 10 مرفوعة إلى قوة معينة.
وتتكوّن صيغة E من عدد، يليه e أو E، ثم قوة العدد 10 التي يُضرب فيها.
const num = 3.125e7;
// => 31250000
// The notation essentially says, "Take 3.125 and multiply it by 10^7".
يمكن أيضًا استخدام صيغة E لتمثيل أعداد صغيرة جدًا:
const num = 325987e-6; // Equals 0.325987
// The notation essentially says, "Take 325987 and multiply it by 10^-6.
يمكن استخدام الشرطات السفلية لجعل الأعداد الكبيرة أسهل في القراءة للمستخدم. وسيتجاهل المصرّف الشرطات السفلية تمامًا.
const num = 1_000_000; // You can read this as 1,000,000
console.log(num);
// => 1000000
يوجد كائنان مدمجان يفيدان عند التعامل مع الأعداد:
Number: خصائص ساكنة لقيم شائعة ومفيدة، ودوال ساكنة لفحص الأنواع وتحويل الأنواع، ودوال مثيل لتحويل الأنواع وتنسيق الأعداد كسلاسل نصية.Math: خصائص ودوال للثوابت والدوال الرياضية، ولا يعمل مع BigInt.تضم Math أيضًا دوالًا لتقريب الأعداد.
يمكنك قراءة المزيد عن خيارات التقريب المتاحة في مقال javascript.info حول التقريب.
Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235
الكائن object العام المدمج الخاص بـ Number هو أيضًا function عامة يمكن استخدامها لتحويل أي شيء تقريبًا شبيه بالأعداد إلى number.
وهو أقل تسامحًا من تحليل string إلى number.
const date = new Date('December 17, 1995 03:24:00');
const unix = Number(date);
unix;
// => 819199440000
يوجد ثلاثة أنواع من القيم العظمى (والصغرى / العظمى السالبة) للأعداد في JavaScript:
VALUE: تعطيهما Number.MAX_VALUE وNumber.MIN_VALUE
INFINITY: تعطيهما Number.POSITIVE_INFINITY وNumber.NEGATIVE_INFINITY
SAFE_INTEGER: تعطيهما Number.MAX_SAFE_INTEGER وNumber.MIN_SAFE_INTEGER
بسبب طريقة تنفيذ الأعداد في JavaScript، لا يمكن تمثيل كل عدد يقع بين Number.MIN_VALUE وNumber.MAX_VALUE.
ومع ذلك، يمكن تمثيل كل عدد يقع بين Number.MIN_SAFE_INTEGER - 1 وNumber.MAX_SAFE_INTEGER + 1.
تحتوي JavaScript على عدة قيم خاصة للأعداد:
NaN وInfinity.+0 و-0.تُنتَج قيمة الخطأ NaN (وتعني "ليس عددًا") في الحالات التالية.
Number('123'); // => 123
Number('Hello, World!'); // => NaN
Math.sqrt(-64); // => NaN
NaN + 69; // => NaN
NaN هي القيمة الوحيدة التي لا تساوي نفسها:
NaN === NaN; // => false
إذا أردت التحقق مما إذا كانت قيمة ما هي NaN، فعليك استخدام الدالة العامة isNaN():
isNaN(NaN); // => true
isNaN(123); // => false
Infinity هي قيمة خطأ تشير إلى إحدى مشكلتين:
Math.pow(2, 1024); // => Infinity
6 / 0; // => Infinity
-6 / 0; // => -Infinity
Infinity أكبر من أي عدد آخر (ما عدا NaN).
وبالمثل، -Infinity أصغر من أي عدد آخر (ما عدا NaN)
تتيح لك الدالة العامة isFinite() التحقق مما إذا كانت قيمة ما عددًا حقيقيًا (لا لانهائيًا ولا NaN):
isFinite(80085); // => true
isFinite(Infinity); // => false
isFinite(NaN); // => false
+0 و-0 عددان مختلفان في JavaScript. وقد ينتجان إذا مثّلت عددًا صغيرًا جدًا لدرجة لا يمكن تمييزه عن الصفر.
ويتيح لك الصفر المُوقَّع تسجيل "من أي اتجاه" اقتربت من الصفر، أي ما كانت إشارة العدد قبل اعتباره صفرًا.
ومن أفضل الممارسات أن تتظاهر بوجود صفر واحد فقط.
تُعتبر الأعداد متساوية إذا كانت لها القيمة نفسها.
1 == 1.0;
// => true
1 === 1.0;
// => true
// Remember, all numbers are floating-points, so this is
// different syntax for the exact same value.
1 === 1n;
// => false
// Strictly checking a number against a bigint will always result
// in false.
راجع المقارنة لمزيد من المعلومات حول المقارنات عمومًا ومقارنة القيم العددية في JavaScript.
لأن الأعداد في JavaScript أعداد فاصلة عائمة، فإن كل الحسابات التي تستخدم هذه القيم هي حسابات فاصلة عائمة. لذلك، في JavaScript:
0.1 + 0.2 === 0.3;
// => false
راجع 0.30000000000000004.com للحصول على شرح موجز، والملحق D من دليل Oracle للحوسبة العددية "ما ينبغي أن يعرفه كل عالِم حاسوب عن حساب الفاصلة العائمة" للحصول على شرح متعمق.