اعداد 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 همیشه عدد اعشاری 64 بیت هستند
برخلاف بسیاری از زبانهای برنامهنویسی دیگر، JavaScript نوعهای مختلفی از اعداد را تعریف نمیکند، مانند اعداد صحیح، کوتاه، بلند، اعشاری و غیره.
数值های JavaScript همیشه به عنوان عدد اعشاری دوگانه ذخیره میشوند، بر اساس استاندارد بینالمللی IEEE 754.
این فرمت با 64 بیت ذخیره میشود، که 0 تا 51 شامل اعداد (قطعات) و 52 تا 62 شامل اعتبار و 63 بیت شامل نشان است:
مقدار(به عنوان Fraction/Mantissa) | اعتبار | نشان |
---|---|---|
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 (Not a Number) به دست میآید:
مثال
var x = 100 / "Apple"; // x خواهد بود NaN (Not a Number)
اما اگر یک رشته شامل عدد باشد، نتیجه یک عدد خواهد بود:
مثال
var x = 100 / "10"; // x خواهد بود 10
شما میتوانید از تابع جهانی JavaScript استفاده کنید isNaN()
برای تعیین اینکه یک مقدار آیا عدد است یا خیر:
مثال
var x = 100 / "Apple"; isNaN(x); // بازمیگردد به true، زیرا 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
)) بازمیگردد به مقدار عددی که جاوااسکریپت در محاسبات عددی هنگامی که از محدوده ممکن خارج میشود، بازمیگرداند.
مثال
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"
شانزدهسانی
جاوااسکریپت اعداد با پیشوند 0x
اعداد متغیرهای عددی به عنوان شانزدهسانی تفسیر میشوند.
مثال
var x = 0xFF; // x خواهد بود 255.
هرگز اعداد را با پیشوند صفر بنویسید (مثلاً 07).
برخی از نسخههای جاوااسکریپت اعداد با پیشوند صفر را به عنوان اعداد هشتی تفسیر میکنند.
به صورت پیشفرض، جاوااسکریپت اعداد را به صورت اعداد اعشاری دهدهی نمایش میدهد.
اما شما میتوانید از toString()
این روش اعداد را به صورت شانزدهسانی، هشتی یا دودویی نمایش میدهد.
مثال
var myNumber = 128; myNumber.toString(16); // بازمیگردد به 80 myNumber.toString(8); // بازمیگردد به 200 myNumber.toString(2); // بازمیگردد به 10000000
اعداد میتوانند اشیاء باشند
معمولاً جاوااسکریپت اعداد را به صورت مقادیر اولیه با استفاده از کلمات عادی ایجاد میکند: 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