الأرقام JavaScript

يوجد نوع واحد فقط من الأعداد في JavaScript.

يمكن كتابة الأعداد مع أو بدون نقطة عشرية.

JavaScript الأعداد

يمكن كتابة أرقام JavaScript بشكل يحتوي أو لا يحتوي على نقطة عشرية:

مثال

var x = 3.14;    // عدد يحتوي على نقطة عشرية
var y = 3;       // عدد بدون نقطة عشرية

جرب بنفسك

يمكن كتابة الأعداد الكبيرة أو الصغيرة جدًا باستخدام حساب العلمي:

مثال

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123

جرب بنفسك

أرقام JavaScript دائمًا هي أعداد عشرية ثنائية المقدار

مختلف عن العديد من لغات البرمجة الأخرى، لا تعرف JavaScript أنواعًا مختلفة من الأرقام، مثل الأعداد الصحيحة القصيرة والأعداد الطويلة والأعداد العشرية إلخ.

تخزن أرقام JavaScript دائمًا كعدد عشري ثنائي المقدار، وفقًا للم规范 الدولية IEEE 754.

يستخدم هذا النموذج 64 بت لتخزين القيمة، حيث يتم تخزين الرقم (الجزء) من 0 إلى 51، والنسبة من 52 إلى 62، والاشارة في بت 63:

القيمة (مكنى عنه جزء/الجزء الأصلي) النسبة الإشارة
52 bits(0 - 51) 11 bits (52 - 62) 1 bit (63)

دقة

العدد الكامل (بدون استخدام قياس أو حساب علمي) سيكون دقيقًا حتى 15 رقم.

مثال

var x = 999999999999999;   // x سيكون 999999999999999
var y = 9999999999999999;  // y سيكون 10000000000000000

جرب بنفسك

أكبر عدد للعشرات هو 17 رقم، ولكن حساب العدد العشري ليس دائمًا دقيقًا 100%:

مثال

var x = 0.2 + 0.1;         // x سيكون 0.30000000000000004

جرب بنفسك

استخدام الضرب والقسمة يمكن أن يساعد في حل المشكلة المذكورة أعلاه:

مثال

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x سيكون 0.3

جرب بنفسك

جمع الرقم والنص

تحذير !!

جمع JavaScript والرابط (الجمع) يستخدم نفس الرمز +.

الرقم يستخدم جمعًا. النص يستخدم رابطًا.

إذا كنت تقوم بجمع اثنين من الأرقام، النتيجة ستكون عدد:

مثال

var x = 10;
var y = 20;
var z = x + y;           // z سيكون 30 (عدد)

جرب بنفسك

إذا كنت تقوم بجمع نصين، النتيجة ستكون رابط نصي:

مثال

var x = "10";
var y = "20";
var z = x + y;           // سيكون z 1020 (نص)

جرب بنفسك

إذا كنت تقوم بجمع عدد ونص، النتيجة ستكون رابط نصي:

مثال

var x = 10;
var y = "20";
var z = x + y;           // z سيكون 1020 (نص)

جرب بنفسك

إذا قمت بجمع نص وعدد، فإن النتيجة ستكون ربط النصوص أيضًا:

مثال

var x = "10";
var y = 20;
var z = x + y;           // سيكون z 1020 (نص)

جرب بنفسك

الخطأ الشائع هو الاعتقاد بأن النتيجة ستكون 30:

مثال

var x = 10;
var y = 20;
var z = "The result is: " + x + y;

جرب بنفسك

الخطأ الشائع هو الاعتقاد بأن النتيجة ستكون 102030:

مثال

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;

جرب بنفسك

يحاول JavaScript التجميع من اليسار إلى اليمين.

بسبب أن x و y كلاهما أرقام، سيتم جمع 10 + 20.

بسبب أن z هو نص، "30" + "30" سيتم ربطهما.

نص عدد

يمكن أن تحتوي النصوص في JavaScript على محتوى عددي:

var x = 100;         // x هو عدد
var y = "100";       // y هو نص

في جميع العمليات الحسابية العددية، يحاول JavaScript تحويل النصوص إلى أرقام:

هذا المثال يعمل كما يلي:

var x = "100";
var y = "10";
var z = x / y;       // سيكون z 10

جرب بنفسك

هذا المثال سيكون كما يلي أيضًا:

var x = "100";
var y = "10";
var z = x * y;       // سيكون z 1000

جرب بنفسك

هذا المثال يعمل كما يلي:

var x = "100";
var y = "10";
var z = x - y;      // سيكون z 90

جرب بنفسك

لكن هذا المثال لن يعمل كما هو موضح أعلاه:

var x = "100";
var y = "10";
var z = x + y;       // لن يكون z 110 (بل 10010)

جرب بنفسك

في المثال الأخير، استخدم JavaScript علامة الح加减 (+) لربط النصوص.

NaN - غير عدد

NaN هي كلمة محفوظة في JavaScript، تشير إلى أن عددًا معينًا ليس عددًا قانونيًا.

حاول القيام بجمع غير عدد باستخدام جزء منقوم، سيكون النتيجة NaN (ليس عددًا):

مثال

var x = 100 / "Apple";  // سيكون x NaN (ليس عددًا)

جرب بنفسك

لكن، إذا كان النص يحتوي على عدد، فإن النتيجة ستكون عددًا:

مثال

var x = 100 / "10";     // سيكون x 10

جرب بنفسك

يمكنك استخدام الدالة العالمية JavaScript isNaN() لتحديد ما إذا كان某个 قيمة عددًا أم لا:

مثال

var x = 100 / "Apple";
isNaN(x);               // يعود صحيح، لأن x ليس عددًا

جرب بنفسك

كن حذرًا NaN، إذا كنت تستخدم في العمليات الرياضية NaN، فإن النتيجة أيضًا ستكون NaN:

مثال

var x = NaN;
var y = 5;
var z = x + y;         // سيكون z NaN

جرب بنفسك

قد يكون النتيجة ربطًا:

مثال

var x = NaN;
var y = "5";
var z = x + y;         // سيكون z NaN5

جرب بنفسك

NaN هذا هو العدد،typeof NaN يعود number:

مثال

typeof NaN;             // يعود "number"

جرب بنفسك

Infinity

Infinity أو -Infinity)هذا هو القيمة التي تعود بها JavaScript عند تجاوز نطاق أرقام الممكنة في الحسابات.

مثال

var myNumber = 2;
while (myNumber != Infinity) {          // تنفيذ حتى Infinity
    myNumber = myNumber * myNumber;
}

جرب بنفسك

عند تقسيم 0 (صفر) أيضًا سيتم إنشاء Infinity:

مثال

var x =  2 / 0;          // سيكون x Infinity
var y = -2 / 0;          // سيكون y -Infinity

جرب بنفسك

Infinity هذا هو العدد:typeOf Infinity يعود number.

مثال

typeof Infinity;        // يعود "number"

جرب بنفسك

الـ hexadecimal

سيقوم JavaScript بتفسير ما يبدأ بـ prefix كـ hexadecimal. 0x القيم النصية العددية كـ hexadecimal.

مثال

var x = 0xFF;             // سيكون x 255.

جرب بنفسك

لا تستخدم أبدًا leading zero في كتابة الأعداد (مثل 07).

بعض إصدارات JavaScript قد تفسير الأعداد التي تبدأ بـ leading zero كـ octal.

بالتشخيص، يعرض Javascript الأعداد كـ decimal decimal.

لكن يمكنك استخدام toString() يخرج هذا الأسلوب عددًا كـ hexadecimal أو octal أو binary.

مثال

var myNumber = 128;
myNumber.toString(16);     // يعود 80
myNumber.toString(8);      // يعود 200
myNumber.toString(2);      // يعود 10000000

جرب بنفسك

يمكن أن تكون القيمة数值 كـ object

عادةً يتم إنشاء القيم العددية لـ JavaScript عبر القيم المباشرة: var x = 123

لكن يمكن أيضًا استخدام الكلمة المفتاحية new محددة كعنصر: var y = new Number(123)

مثال

var x = 123;
var y = new Number(123);
// typeof x يعود إلى number
// typeof y يعود إلى object

جرب بنفسك

لا تقم بإنشاء عناصر عددية. هذا يمكن أن يؤدي إلى إبطاء الأداء.

new الكلمة المفتاحية تجعل الكود معقداً وتسبب في بعض النتائج غير المتوقعة:

عند استخدام == عند استخدام محددة متساوية، يبدو الرقم المتساوي متساوياً:

مثال

var x = 500;             
var y = new Number(500);
// (x == y) هو true لأن x و y لهما القيمة المتساوية

جرب بنفسك

عند استخدام === بعد استخدام محددة متساوية، يصبح الرقم المتساوي غير متساوٍ لأنه === يفترض أن يكون لدى العملية نوعاً وقيمة متطابقة.

مثال

var x = 500;             
var y = new Number(500);
// (x === y) هو false لأن نوع x و y مختلفان

جرب بنفسك

حتى أسوأ. لا يمكن مقارنة العناصر:

مثال

var x = new Number(500);             
var y = new Number(500);
// (x == y) هو false لأن العناصر غير قابلة لل مقارنة

جرب بنفسك

لا يمكن مقارنة العناصر JavaScript.