کار با اعداد یا Numbers در جاوااسکریپت

سلام خدمت تمامی دوستان و همراهان محترم سایت آموزشی فری لرن ، امیدوارم که حال همگیتون خوب باشه. لطفا در ادامه با آموزش کار با اعداد یا Numbers در جاوااسکریپت با من همراه باشید.

کار با اعداد یا Numbers در جاوااسکریپت

Free-Learn

اعداد همیشه در نقطه اعشار ۶۴ بیت ذخیره میشوند

جاوااسکریپت برخلاف دیگر زبان های برنامه نویسی ، نمیتونه و این قدرت رو نداره که اعداد رو در نوع های مختلفی ( مثه نوع Integers یا Short یا Long ) تعریف و نگهداری کنه.

همونطور که در جلسات قبلی ( آموزش کار با انواع داده ها یا Data Types در JS ) متوجه شدیم، جاوااسکریپت فقط ۱ نوع عددی میتونه داشته باشه ، که این ۱ نوع حالا ممکنه یه عدد صحیح باشه یا مثلا اعشاری.

 

جاوااسکریپت همیشه با توجه به استاندارد IEEE 754 اعداد رو در مبنای ۲ ( دودویی ) ۶۴ بیتی با ۲ برابر دقت ذخیره میکند، که در این قالب ( فرمت ) عدد کسر ( Fraction ) در ۵۲ بیت ذخیره میشود و توان ( Exponent ) در ۱۱ بیت و علامت ها ( مثه var یا $ و… ) در ۱ بیت ذخیره میشوند.

Free-Learn

کار با اعداد یا Numbers در جاوااسکریپت

در ادامه میخوایم با اعداد یا Numbers در JS آشنا بشیم و ببینیم اصلا چجوری میشه اعداد رو تعریف کرد و یا چجوری میشه نوع یک عدد ( مثلا صحیح یا اعشاری و… ) رو مشخص کرد.

همونطور که بارها اشاره کردیم در جاوااسکریپت داده های عددی فقط یک نوع دارند، که این یک نوع حالا ممکنه ساده ( یا منظور صحیح ) باشه یا ممکنه اعشاری باشه.

حال همین ۱ نوع رو ما میتونیم در شکل های مختلف تعریف کنیم، مثلا یک عدد صحیح ( Integer ) ، اعشاری ( Decimals ) ، هگزادسیمال ( Hexadecimal ) ، اکتال ( مبنای هشت یا Octal ) ، نمایی / علمی ( Exponential ) باشند.

امتحان کنید

Free-Learn

اعداد در شکل صحیح یا Integer

نوع صحیح یه عدد خب مشخصه دیگه ، در این حالت اعداد در نوع صحیح تعریف می شوند، اعدادی مثه ۳ , ۱۰ , ۴۲۲ , ۳۳- و.. میتونن یک عدد صحیح باشند.

مثال : جمع ( + ) ۲ عدد صحیح

امتحان کنید

Free-Learn

اعداد در شکل اعشاری یا Decimals

در این نوع، اعداد بصورت اعشاری مثه ۴٫۴ تعریف میشوند، که برای گذاشتن اعشار باید از نقطه ( دات یا . ) استفاده کرد.

مثال : جمع ( + ) ۲ عدد اعشار

امتحان کنید

Free-Learn

اعداد در شکل هگزادسیمال و اکتال

اگه با مبناهای اعداد در برنامه نویسی ها آشنا باشید، میدونید که اعداد در مبناهای مختلف وجود دارند، مثلا مبنای ۲ ( یا Binary ) یا مبنای ۱۶ ( یا Hexadecimal ) ، مبنای ۱۰ ( یا Decimal ) ، مبنای ۸ ( یا Octal  )

حال ما میتونیم از همین مبناها در جاوااسکریپت استفاده کنیم، یعنی میشه یه عدد رو مثلا در مبنای دودویی ( همون مبنای ۲ یا باینری یا Binary ) تعریف کرد و از آن استفاده کرد.

اعداد بصورت پیش فرض در جاوااسکریپت بر مبنای ۱۰ (ده دهی) می باشند.

مثال شماره ۱ : استفاده از نوع هگزادسیمال یا Hexadecimal ( باید اول یه ۰x گذاشت بعدش از عدد در مبنای ۱۶ استفاده کرد )

امتحان کنید

مثال شماره ۲ : برنامه ای که یک عدد صحیح از کاربر دریافت و سپس عدد دریافت شده رو به مبناهای ۱۰ , ۸ , ۱۶ , ۲ تبدیل نماید.

امتحان کنید

Free-Learn

اعداد در شکل نمایی / علمی یا Exponential

در این حالت ما میتونیم اعداد رو در قالب یه نماد علمی که بهش میگن نمایی یا Exponential به نمایش درآوریم، یعنی اعداد خلی بزرگ و یا خیلی کوچک رو میتونیم خیلی راحت با این نماد به نمایش درآوریم.

شکل کلی استفاده از این نماد بصورت زیر می باشد :

 

مثال شماره ۱ : استفاده در اعداد مثبت ( ۵ که میشه ۵ ، و اون e یعنی حالت نمایی و ۵ جلوش یعنی تعداد ارقام صفرها ) پس باید در خروجی ۵۰۰۰۰۰ چاپ بشه.

امتحان کنید

مثال شماره ۲ : مشخص کردن تعداد ارقام اعشار

امتحان کنید

Free-Learn

میزان دقت / درستی اعداد

دقت اعداد صحیح ( به جز اعداد نمایی ) تا ۱۵ رقم بدون هیچ مشکلی محاسبه میشود و در اعداد اعشاری تا ۱۷ رقم محاسبه میشود ولی خب همیشه محاسبه نقطه اعشار بصورت ۱۰۰% دقیق نیست.

مثال شماره ۱ : نمایش اعداد صحیح تا ۱۵ رقم

امتحان کنید

مثال شماره ۲ : جمع ( + ) کردن ۲ عدد اعشاری با همدیگه

امتحان کنید

مثال شماره ۳ : رُند کردن و بالابردن دقت نتیجه مثال شماره ۲ با استفاده از عمل ضرب و تقسیم

با استفاده از متد ()toFixed نیز میتوان به میزان دلخواه ، تعداد ارقام و دقت اعشار را مشخص کرد. ( در بخش بعدی با متدها آشنا خواهید شد )


امتحان کنید

Free-Learn

اعداد در قالب رشته یعنی چی؟

در ادامه ی آموزش کار با اعداد یا Numbers در جاوااسکریپت میخوایم ببینیم یک عدد چجوری میتونه در قالب یک رشته باشه ، و یا اصلا آیا اعداد میتونن رشته باشند یا خیر؟!

بطور کلی وقتی یک عدد رو درون دابل کوتیشن یا ” ” یا تک کوتیشن یا ‘ ‘ قرار بدیم میشه یه رشته ، یعنی دیگه اون عدد در معنای واقعی یک عدد نیست بلکه رشته هست و جاوااسکریپت اونو به عنوان رشته میبینه.

در نتیجه اگه مثلا من بخوام ۲ تا عدد رو باهم جمع ( + ) کنم ، جمع نمیشه بلکه بهم پیوند میخورند ( یا بهم میچسبن )

حتی اگه یکی از اعداد رشته باشه و دیگری عدد واقعی، بازهم بهم پیوند میخورند.

فقط برای جمع کردن ( به اضافه کردن یا + ) اعداد در قالب رشته بهمدیگه میچسبند وگرنه برای ضرب و تفریق و تقسیم هیچ مشکلی ندارد و بهم نمی چسبند.

مثال شماره ۱ : جمع کردن ۲ عدد که در قالب رشته هستند

امتحان کنید

مثال شماره ۲ : ضرب و تفریق کردن ۲ عدد که در قالب رشته هستند

امتحان کنید

Free-Learn

تبدیل اعداد رشته ای به اعداد صحیح

خب شاید من بخوام مثلا ۲ عدد از کاربر با استفاده از اینپوت ( Input ) دریافت کنم و سپس همین ۲عدد رو باهمدیگه مثلا جمع و تفریق و ضرب و تقسیم کنم ، خب باید چکار کنم؟!

  • مشکل

هرچیزی که درون اینپوت ( Input ) وارد شه به عنوان رشته حساب میشه ، در نتیجه اگه کاربر ۲ عدد وارد کند بجای اینکه باهم جمع بشن بهم پیوند میخورند.

  • راه حل

ما باید بتونیم رشته رو تبدیل به عدد کنیم، بعدش دیگه عمل جمع بدون مشکل انجام میشه چون دیگه اون اعداد رشته نیستند بلکه عدد در معنای واقعی هستند.

برای تبدیل رشته به عدد میتونیم از متدهای ()Number یا ()parseInt استفاده نماییم ، که در جلسه بعدی با متدهای اعداد بطور کامل آشنا خواهید شد.

مثال شماره ۱ : دریافت ۲ عدد صحیح از کاربر توسط تگ Input و سپس جمع ( + ) کردن اعداد

امتحان کنید

Free-Learn

اجرای دستوارت از سمت چپ به راست

در زبان جاوااسکریپت دستورات از سمت چپ به راست اجرا میشن، یعنی اگه دستوراتی همانند مثال زیر داشته باشیم : اول a و b رو باهم جمع میکنه و بعد c ( که رشته هست ) رو میچسبونه به نتیجه جمع a و b

امتحان کنید

مثال شماره ۲ : حالا اگه اول c رو بنویسیم و بعدش a و b رو باهم جمع کنیم، بنظره شما چه اتفاقی میوفته؟ چون c رشته هست پس باید خروجی بشه ۲۰۵۱۰ ( چون اول رشته اومده بعد عدد پس رشته رو میچسبونه به عدد و بعدش چون گفتیم a با b جمع بشه، دیگه  خاصیتشون از بین میره و دیگه جمع نمیشن )

امتحان کنید

Free-Learn

خروجی NaN در جاوااسکریپت

یه کلمه به اسم NaN داریم ، در کل اینو بدونید که این کلمه بخودی خود عدد نیست، نوعش ( یا Type ش ) عددی هست ولی خودش و ماهیتش عدد نیست، بطور کلی یه کلمه رزرو شده در جاوااسکریپت می باشد که نشون میده یک عدد از نظر قانونی عدد نیست.

فرض میکنیم دستوراتی همانند مثال زیر داشته باشیم : یعنی میخوایم متغیر a رو که عدد ۱۰ هست بر متغیر b که رشته اونم نه رشته ی عددی بلکه رشته متنی هست تقسیم کنیم ، خب تموم شد رفت همین یعنی NaN

امتحان کنید

یعنی درکل هر موقع در برنامه هاتون خروجی NaN داد ، این یعنی یک طرفه محاسبات متن ( یا رشته ) بوده و داره میگه آقا نمیشه که مثلا یک عدد بروی متن تقسیم شود یا مثلا ضرب و تفریق شود.

ولی جمع ( + ) چون گفتیم رشته با عدد اگه جمع بشه ( یعنی به اضافه شه ) بهم پیوند میخورند یا بهم میچسبند. پس مثال زیر بهمون خروجی میده و هیچ مشکلی هم نداره.

امتحان کنید

Free-Learn

خروجی بی نهایت یا Infinity در جاوااسکریپت

کلمه Infinity در لغت یعنی بی نهایت ، در جاوااسکریپت وقتی نتیجه یه محاسبه خارج از محدوده ی جاوااسکریپت ( یعنی خارج از توان جاوااسکریپت ) باشه خروجی میشه Infinity ( مثبت ) یا Infinity- ( منفی )

تقسیم بر ۰ هم Infinity میشه

وقتی یه عدد صحیح مثبت یا منفی تقسیم بر ۰ بشه، در خروجی Infinity تولید میشه.

امتحان کنید

Free-Learn

اعداد میتونن شئ یا Object باشند

اعداد هم همانند رشته ها ( که در جلسات قبلی خوندیم ) میتونن بصورت یک شئ تعریف بشن و مورد استفاده قرار بگیرند.

سعی کنید از این روش برای تعریف متغیرهای عددی استفاده نکنید، چون هم سرعت اجرای برنامه رو پایین میاره هم نمیشه بهش اعتماد کرد و هر لحظه ممکنه بکل برنامه تون رو خراب کنه.


امتحان کنید

پایان آموزش کار با اعداد یا Numbers در جاوااسکریپت

Free-Learn

دریافت PDF یا پرینت این مطلب