الأرقام JavaScript
- الصفحة السابقة نماذج الأحرف JS
- الصفحة التالية JS BigInt
يوجد نوع واحد فقط من الأعداد في 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.
- الصفحة السابقة نماذج الأحرف JS
- الصفحة التالية JS BigInt