7) آموزش اعداد در جاوااسکریپت (Numbers)
آموزش رایگان جاوااسکریپت
اعداد یا Numbers یکی از انواع داده ای بود که در جلسه ششم از دوره مقدماتی جاوااسکریپت راجع بهش صحبت کردیم. در برنامه نویسی و به خصوص زبان برنامه نویسی جاوااسکریپت اعداد نقش مهمی دارن و علاوه بر کاربردی که در ریاضیات دارن، متد های زیادی برای کار با اعداد در جاوااسکریپت وجود دارد.
اعداد در جاوااسکریپت (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 یا Not a Number چیست؟
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
متدهای اعداد در جاوااسکریپت (Numbers Methods)
متدهای عددی در جاوااسکریپت به ما کمک میکنن تا کارایی بیشتر و بهتری با اعداد داشته باشیم. با استفاده از متد اعداد در جاوااسکریپت شما میتونید حتی اعداد ساده با مقادیر ابتدایی مثل: x=2019 رو به Object تبدیل کنید و از خواص و متدهای مختلف استفاده کنید تا به هدف مورد نظر برسید.
متد تبدیل عدد به رشته در جاوااسکریپت
متد ()toString
با متد ()toString همین طور که از اسمش معلومه اعداد رو به رشته تبدیل میکنه. این متد برای تمام اعداد کار میکنه.
var x = 2019; // Number output: 2019 x.toString(); // String output: "2019" (2019).toString() // String output: "2019" (2019+1).toString() // String output: "2020"
متد اعداد اعشاری در جاوااسکریپت
متد ()toFixed
متد ()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
متد ()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
متدهای تبدیل رشته به عدد
برای تبدیل متغیرها به عدد در جاوااسکریپت ۳ متد داریم.
متد ()Number
متد ()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 برای تبدیل تاریخ هم استفاده کرد. هر تاریخی که داخل پرانتز قرار بگیره به صورت میلی ثانیه از تاریخ ۱-۱-۱۹۷۰ در نظر گرفته می شود که خیلی از جاها برای محاسبه کاربرد داره. مثال:
Number(new Date("2017-09-30")); // returns 1506729600000
در جاوااسکریپت، تاریخ مرجع یا “epoch” برابر با نیمهشب 1 ژانویه 1970 به وقت UTC در نظر گرفته شده، که به عنوان “Unix epoch” شناخته میشه. این تاریخ به دلیل سازگاری و استانداردسازی با سیستمهای Unix و POSIX انتخاب شده. انتخاب این نقطه مرجع باعث میشه که محاسبات زمانی به سادگی و با دقت انجام بشه، چرا که همه زمانها به صورت تعداد میلیثانیهها از این تاریخ شمارش میشن. همچنین، 1970 به اندازه کافی نزدیک به زمان معرفی سیستمهای کامپیوتری مدرن و دور از زمان حاله، که این انتخاب رو منطقی میکنه!
متد ()parseInt
تفاوت متد ()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
اگر چند عدد با فاصله باشن فقط عدد اول رو برای ما بر میگردونه
متد ()parseFloat
متد ()parseInt دقیقا مثل متد ()parseInt عمل میکنه؛ با این تفاوت که اگه عدد اعشاری باشه، قسمت اعشاری هم برای ما بر میگردونه.
parseFloat("2020"); // returns 2020 parseFloat("20.20"); // returns 20.20 parseFloat("10 20 30"); // returns 10 parseFloat("20 years"); // returns 20 parseFloat("years 20"); // returns NaN
برای مشاهده لینک دانلود لطفا وارد حساب کاربری خود شوید!
وارد شویدپسورد فایل : ندارد گزارش خرابی لینک
مطالب زیر را حتما مطالعه کنید
21 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
شرط میشه گذاشت وقتی متغییر عدد باشه کاری و انجام بده ؟
بله تفاوتی نداره
سلام
در این دستور
Number(new Date(“2017-09-30”)); // returns 1506729600000
این new که نوشتین چی هست؟ که اگر هم ننویسیم not a number برمیگرداند.
ممنون
سلام . فایل زیپ این قسمت باز نمیکرد خطای unexpected میداد . از لینک اینجا هم خواستم ویدیو رو دانلود کنم این صفحه رو دانلود کرد بجای ویدیو
سلام و درود . لطفا ویدئو رو انلاین ببینید یا از صفحه دوره مقدماتی جاوااسکریپت دانلود کنید
سلام خسته نباشید.
چرا typeof قسمت tofixed و toprecision رو string میزنه؟مگه number از نوع float نیست؟
در جاوااسکریپت ما تفاوتی بین float و integer نداریم و کلا NUmber میگیم. و وقتی متد میزنیم اول استرینگ میشه و بعد تغییر ایجاد میشه.
سلام ممنون از آموزشهاتون توضیح و مثالهای متد ParseFloat اشتباها همان متد ParseLnt است لطفا اصلاح کنید.
سلام و درود.
اصلاح شد ممنون از اطلاع رسانیتون
سلام خسته نباشید وممنون از اموزشای عالیتون
یه مشکلی موقه خروجی گرفتن تو CNSOLباید این HTML1300: Navigation occurred.مضمون برام پیش میاد ممنون میشم کمکم کنید.
سلام و درود.
ببخشید متوجه منظورتون نشدم کلا
ممنون از وبسایت خوبتون و پست بسیار عالی که در این زمینه نوشتید.
⭐⭐⭐⭐⭐
سلام و درود. خواهش میکنم.
سلام ممنون از آموزشهاتون توضیح و مثالهای متد ParseFloat اشتباها همان متد ParseInt است لطفا اصلاح کنید
سلام و درود. اصلاح شد
مرسی بابت اموزش های خوبتون..
اگر امکانش هست بیشتر وارد جزیات بشین ممنون:)
درود بر شما.
ممنون از شما، این دوره مقدماتی هست و بیشتر بر مبانی اصلی جاوااسکریپت تمرکز شده.
برای جزییات بیشتر میتونید به سری دوره های آموزش کامل مراجعه کنید.
https://megajs.com/product-category/deep-learn/js/
سایتتون عالیه، من کلی سایت رفتم ولی هیچی از جاوا اسکریپت نفهمیدم ولی اینجا دارم یاد میگیرم
دمتون گرررم
نظر لطف شماست دوست عزیز.
امیدوارم که به بهترین شکل یاد بگیرید و در این مسیر تونسته باشم کمکی کنم.
دورد، خداقوت خسته نباشید.
ضرب عدد مثبت با صفر نتیجه 0 خواهد داد و ضرب عدد منفی با صفر نتیجه 0- می دهد!
درحالی که منفی صفر بی معنی است! مگه هر عدد تقسیم بر صفر نباید خود آن عدد بشود؟
می توان از مقادیر NaN و یا infinity به صورت مستقیم مانند true و false استفاده کرد؟
درود بر شما،
هر عدد تقسیم بر ۰ مقدار بی نهایت میده (infinity) که اگر عدد + باشد نتیجه (infinity+) و اگر عدد منفی باشد نتیجه (infinity-) میشود.
بله میشه از مقدار NaN و Infinity به صورت مستقیم استفاده کنید.