اعداد یا Numbers یکی از انواع داده ای بود که در جلسه ششم از دوره مقدماتی جاوا اسکریپت راجع به آن صحبت کردیم. در برنامه نویسی و به خصوص زبان برنامه نویسی جاوا اسکریپت اعداد نقش مهمی دارند و علاوه بر کاربردی که در ریاضیات دارند، متد های زیادی برای کار با اعداد در جاوا اسکریپت وجود دارد.
اعداد در جاوا اسکریپت فقط یک نوع هستش و همان طور که در جلسه انواع داده گفتیم اعداد به دو شکل Integer و Float در متغیر قرار میگیرد. به اعداد صحیح integer و به اعداد اعشار float می گوین تعریف کرد. البته اعداد خیلی بزرگ یا خیلی کوچک را با نماد علمی (e) هم نشان میدهیم. اعداد در جاوا اسکریپت همیشه ۶۴بیت از حافظه را اشغال میکنند. اعداد تا ۱۵ رقم صحیح و ۱۷ رقم اعشار قابل تعریف و نمایش در جاوا اسکریپت هستند.
یکی از عملگرهایی که در جلسه پنجم یاد گرفتیم، عملگر (+) (Plus) بود که کار جمع اعداد را انجام میداد. اما زمانی که یک عدد با یک رشته را جمع کنیم چه میشود؟؟؟ بیاید تست کنیم.
var a = 10; // Number var b = "MEGAJS" // String var z = a + b; // typeof Z is String // output: "10MEGAJS"
بله! همونطور که دیدید ما تونستیم یک عدد را با یک کلمه جمع کنیم!!! و خروجی به این صورته که عدد و رشته را به صورت یک رشته کنار هم قرار میدهد.
رشته ها (Strings) در جاوا اسکریپت میتواند شامل اعداد باشد و به رشته هایی که داخل آن فقط عدد باشد، رشته عددی میگویند. به مثال توجه کنید:
var x = 125; // Number var x = "125" // String
NaN یکی از کلمات رزرو شده جاوا اسکریپت است و زمانی که شما یک عملیات ریاضی مثل ضرب و تقسیم (به جز جمع) بین دو متغیر که یکی عدد است اما دیگری عدد نیست انجام دهید و از متغیر نهایی typeof بگیرید با عبارت NaN روبه رو میشوید.
Var x = 100; // Number var y = "Megajs" // String var z = x / y; // NaN (Not a Number)
نکته: اگر رشته مورد نظر از نوع رشته عددی باشد، همه چیز درست کار میکند.
Var x = 200; // Number var y = "5" // String var z = x / y; // Number // output: 40
بی نهایت یا infinity زمانی رخ میدهد که یک عمل مانند تقسیم عددی بر صفر صورت بگیره یا جواب نهایی خیلی خیلی بزرگ باشه. البته شما میتونید که از خود کلمه infinity در جاوا اسکریپت استفاده کنید، مثبت بی نهایت (infinity) و منفی بی نهایت (infinity-)
مثلا در پیاده سازی عبارات شرطی بسیار کاربرد دارد.
var x = 2 / 0; // x will be Infinity var y = -2 / 0; // y will be Infinity
متدهای عددی در جاوا اسکریپت به ما کمک میکنند تا کارایی بیشتر و بهتری با اعداد داشته باشیم. با استفاده از متد اعداد در جاوا اسکریپت شما میتونید حتی اعداد ساده با مقادیر ابتدایی مثل: x=2019 را به Object تبدیل کنیدو از خواص و متدهای مختلف استفاده کنید تا به هدف مورد نظر برسید.
متد تبدیل عدد به رشته در جاوا اسکریپت
با متد ()toString همین طور که از اسمش معلومه اعداد را به رشته تبدیل میکنه. این متد برای تمام اعداد کار میکنه.
var x = 2019; // Number output: 2019 x.toString(); // String output: "2019" (2019).toString() // String output: "2019" (2019+1).toString() // String output: "2020"
متد ()toFixed محدوده اعداد بعد از اعشار رو نشون میده. در واقع عددی که بین دو پرانتز بذاریم تعیین میکنه که تا چند رقم بعد اعشار اعداد را برای ما برگردونه (returns)
var x = 2.951357; x.toFixed(0); // returns 3 x.toFixed(2); // returns 2.95 x.toFixed(4); // returns 3.9513 x.toFixed(8); // returns 3.95135700
از اعشار دو رقم برای قیمت محصول دلاری معمولا استفاده میشود
متد ()toPrecision محدوده کلی یک عدد را مشخص میکنه. تفاوتش با متد ()toFixed اینه که در متد ()toFixed تعداد رقم بعد از اعشار تعیین میشه اما در متد ()toPrecision تعداد کل ارقام یه عدد مشخص میشه.
var x = 2.951357; x.toPrecision(); // returns 2.951357 x.toPrecision(1); // returns 3 x.toPrecision(4); // returns 2.951 x.toPrecision(6); // returns 2.95135
برای تبدیل متغیرها به عدد در javascript سه متد داریم.
متد ()Number برای تبدیل داده داخل پرانتز به عدد استفاده میشه.
Number(true); // returns 1 Number(false); // returns 0 Number("2019"); // returns 2019 Number(" 2019"); // returns 2019 Number("2019 "); // returns 2019 Number(" 2019 "); // returns 2019 Number("20.19"); // returns 20.19 Number("20,19"); // returns NaN Number("20 19"); // returns NaN Number("Megajs"); // returns NaN
اگر هنگام تبدیل متغیرها به عدد اگه مشکلی وجود داشته باشه (NaN (Not a Number برگشت داده میشه
اگر اعداد با فاصله یا همون (Space) باشن هیچی برای ما برگشت داده نمیشه. اما اگر به عدد اول نیاز داشته باشیم باید از متد ()parseInt و ()parseّFloat استفاده کنیم.
میشه از متد ()Number برای تبدیل تاریخ هم استفاده کرد. هر تاریخی که داخل پرانتز قرار بگیره به صورت میلی ثانیه از تاریخ ۱-۱-۱۹۷۰ در نظر گرفته می شود که خیلی از جاها برای محاسبه کاربرد داره. مثال:
Number(new Date("2017-09-30")); // returns 1506729600000
تفاوت متد ()parsInt با ()Number در اینه که متغیر میتونه شامل فاصله (Space) باشه. و اگر عدد اعشاری باشه، فقط قسمت صحیح عدد را برامون بر میگردونه.
parseInt("2019"); // returns 2019 parseInt("20.19"); // returns 20 parseInt("20 19 18"); // returns 20 parseInt("20 years"); // returns 20 parseInt("years 20"); // returns NaN
اگر چند عدد با فاصله باشن فقط عدد اول را برای ما بر میگردونه
متد ()parseInt دقیقا مثل متد ()parseInt عمل میکنه؛ با این تفاوت که اگه عدد اعشاری باشه، قسمت اعشاری هم برای ما بر میگردونه.
parseInt("2019"); // returns 2019 parseInt("20.19"); // returns 20.19 parseInt("20 19 18"); // returns 20 parseInt("20 years"); // returns 20 parseInt("years 20"); // returns NaN