English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JavaScript只有一种数字类型,没有整数和浮点数的单独指定。
因此,数字可以用JavaScript编写,带或不带小数。
var a = 25; // 无小数点 var b = 80.05; // 有小数点اختبار لرؤية < / >
在以上两种情况下,数据类型都是一个数字,并且无论该数字是否带有小数点都相同。
可以在JavaScript中使用科学的指数表示法来缩写非常大或很小的数字,如以下示例所示:
let num1 = 957e8; // 95700000000 let num2 = 957e-8; // 0.00000957اختبار لرؤية < / >
تعتبر الأرقام في JavaScript كدقيقة، حتى 15 رقماً. هذا يعني أن الأرقام ستتقرب عند الوصول إلى الرقم السادس عشر:
let num1 = 999999999999999; // القيمة تبقى كما هي 999999999999999 let num2 = 9999999999999999; // يتم تقريبها إلى 10000000000000000اختبار لرؤية < / >
على عكس لغات البرمجة الأخرى، لا تعرف JavaScript أنواعًا مختلفة من الأرقام مثل الأعداد الصحيحة، الأعداد القصيرة، الأعداد الطويلة، الأعداد العشرية، إلخ.
يتمتع أرقام JavaScript بدقة 64 bit، ويُطلق عليها أيضًا دقة عالية.
تمثل التمثيل الداخلي على أساس معيار IEEE 754.
تُوزع 64 bit بين علامة الرقم، النسبة والجزء العشري كما يلي:
العلامة | النسبة | النسبة |
---|---|---|
1 bit | 11 bit | 52 bit |
Bit 63 | Bits 62–52 | Bits 51–0 |
من خلال الفصول السابقة يمكننا معرفة أن علامة الجمع + تستخدم لإضافة الأرقام وربط النصوص.
إذا كانت كلاهما أرقام، يتم إضافة الأرقام. إذا كانت نصوص، يتم ربط النصوص.
إذا تم إضافة اثنين من الأرقام، النتيجة ستكون عدد:
let x = 50; let y = 10; let z = x + y; // z = 60 (عدد)اختبار لرؤية < / >
إذا كانت كلاهما نصوص، النتيجة ستكون ربط النصوص:
let x = "50"; let y = "10"; let z = x + y; // z = 5010 (نص)اختبار لرؤية < / >
إذا كانت الأرقام والنصوص، النتيجة ستكون ربط النصوص:
let x = 50; let y = "10"; let z = x + y; // z = 5010 (نص)اختبار لرؤية < / >
إذا كانت النصوص والأرقام، النتيجة ستكون ربط النصوص:
let x = "50"; let y = 10; let z = x + y; // z = 5010 (نص)اختبار لرؤية < / >
يحسب JavaScript التعبيرات من اليسار إلى اليمين. يمكن أن تنتج ترتيبات مختلفة نتائج مختلفة.
في المثال التالي، أولاً يتم إضافة 50 + 10، لأن x و y هما أرقام، ثم يتم ربط 60 + "30" معًا لأن z هو نص:
let x = 50; let y = 10; let z = "30"; let sum = x + y + z; // sum = 6030 (نص)اختبار لرؤية < / >
خطأ شائع، تتوقع هذا النتيجة 60:
let x = 50; let y = 10; let z = "The sum is: " + x + y;اختبار لرؤية < / >
يمكنك استخدام الأقواس لحل هذه المشكلة:
let x = 50; let y = 10; let z = "The sum is: " + (x + y);اختبار لرؤية < / >
يمكن أن تحتوي نصوص JavaScript على قيم أرقام.
let x = 50; // x هو عدد let y = "50"; // y هو نص
إذا كان النص يحتوي على قيمة عددية، يمكن تنفيذ تعبير رياضي في JavaScript.
يمكن تنفيذ التقسيم:
let x = "50" / "10"; // x = 5اختبار لرؤية < / >
يمكن تنفيذ الضرب:
let x = "50" * "10"; // x = 500اختبار لرؤية < / >
يمكن تنفيذ العمليات الأسية:
let x = "5" ** "3"; // x = 125اختبار لرؤية < / >
يمكن تنفيذ التكثيف:
let x = "50"; x++; // x = 51اختبار لرؤية < / >
يمكن تنفيذ الجمع:
let x = "50" - "10"; // x = 40اختبار لرؤية < / >
لا يمكن تنفيذ الجمع:
let x = "50" + "10"; // x = 5010اختبار لرؤية < / >
ملاحظة:إذا أضفت كلمتين، النتيجة ستكون ربط النصوص.
في NaN في JavaScript، الكلمة المفتاحية تشير إلى أن العدد ليس عدداً صالحاً.
إذا حاولت إجراء عملية رياضية بين قيمة عددية وغير عددية، فإن NaN سيتم إرجاعها.
var x = 50 / "oldtoolbag.com"; // x = NaN (ليس عددًا)اختبار لرؤية < / >
لكن، إذا كان النص يحتوي على قيمة عددية، يمكنك استخدام JavaScript لإجراء تعبير رياضي:
var x = 50 / "10"; // x = 5اختبار لرؤية < / >
يمكنك استخدام JavaScript العالمي isNaN()وظيفة لتحديد ما إذا كانت القيمة عددًا:
var x = 50 / "oldtoolbag.com"; isNaN(x); // يعود true لأن x ليس عددًااختبار لرؤية < / >
عند تخصيص القيمة لـ NaN في عملية التخصيص، حتى إذا كان العدد الآخر صحيحًا، فإنه سيتسبب في القيمة:
var x = NaN; var y = 27; var z = x + y; // z = NaNاختبار لرؤية < / >
NaN هو عدد؛ typeof NaN يعود بنوع number:
typeof NaN; // سيقوم بإرجاع "number"اختبار لرؤية < / >
Infinity (بلا نهائي) أو -Infinity (بلا نهائي سلبي) إذا تجاوزت الأرقام التي تقوم بحسابها أكبر عدد متاح في JavaScript، فإنها ستعود.
حتى القيم غير المحددة، ستحدث هذه الحالات أيضًا، مثل قسمنا على الصفر:
var x = 5 / 0; // سيعود بلا نهائي إيجابي var y = -5 / 0; // سيعود بلا نهائي سلبياختبار لرؤية < / >
用技术术语来说,Infinity(正无穷)当数字超过number时将显示1.797693134862315E+308,它表示JavaScript中的上限。
同样,-Infinity(负无穷)当数字超出的下限时将显示-1.797693134862316E+308。
Infinity是一个数字:typeof Infinity返回number:
typeof Infinity; // will return "number"اختبار لرؤية < / >
该数字Infinity也可以在循环中使用:
var num = 5; while (num != Infinity) { // 这里的代码将执行到num = ∞ }اختبار لرؤية < / >
默认情况下,JavaScript将数字显示为以10为基数的小数。
数字也可以用十六进制(基数16),二进制(基数2)和八进制(基数8)表示。
十六进制数字的前缀为0x:
var x = 0xFF; // x = 255اختبار لرؤية < / >
二进制数字的前缀为0b:
var x = 0b1111; // x = 15اختبار لرؤية < / >
切勿写一个以零开头的数字(例如0121)。如果将数字写成前导零,则JavaScript会将数字解释为八进制:
var x = 016;اختبار لرؤية < / >
您可以使用该toString()方法从2到36的数字返回数字。
十六进制为基数16,十进制为基数10,八进制为基数8,二进制为基数2.
var num = 255; num.toString(10); // returns 255 num.toString(16); // returns ff num.toString(8); // returns 377 num.toString(2); // returns 11111111اختبار لرؤية < / >
通常,JavaScript 数字是从文字创建的原始值:
var num = 50;
但是,也可以使用 new 关键字将数字定义为对象:
var num = new Number(50);
为了测试两者之间的差异,我们将初始化一个数字基元和一个数字对象。
var num1 = 50; var num2 = new Number(50); typeof num1 // returns number typeof num2 // يعود إلى objectاختبار لرؤية < / >
ملاحظة:لا تقم بإنشاء أرقام كجسيمات. هذا يمكن أن يقلل من سرعة التنفيذ ويؤدي إلى بعض النتائج غير المتوقعة.
عند استخدام عمودي ==، يتم مقارنة الأرقام:
var num1 = 50; var num2 = new Number(50); document.write(num1 == num2); // العودة إلى true لأن num1 و num2 هو نفس القيمةاختبار لرؤية < / >
عند استخدام عمودي ===، لا تؤخذ الأرقام المتساوية في الاعتبار، لأن عمودي === يتوقع القيمة والنوع:
var num1 = 50; var num2 = new Number(50); document.write(num1 === num2); // العودة إلى false لأن num1 و num2 هو نفس النوعاختبار لرؤية < / >
لا يمكن مقارنة الجسم:
var num1 = new Number(50); var num2 = new Number(50); document.write(num1 == num2); // العودة إلى false لأن num1 و num2 هو نفس العنصر document.write(num1 === num2); // العودة إلى false لأن num1 و num2 هو نفس العنصراختبار لرؤية < / >
ملاحظة (==) و (===) بينهما الفرق. عند مقارنة جسمين من JavaScript، سيتم دائمًا العودة إلى false.