انواع داده ها (data types) در جاوا اسکریپت: اعداد

0 432

با سلام، در قسمت قبل با مفهوم انواع داده ها (data types) و نوع اول آنها، یعنی رشته ها، آشنا شدیم و در این قسمت به سراغ نوع بعدی، یعنی اعداد خواهیم رفت.

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

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

برخلاف بسیاری دیگر از زبان های برنامه نویسی، جاوا اسکریپت اعداد را دسته بندی نمی کند (دسته های اعداد صحیح، اعشاری و …). به همین دلیل اعداد جاوا اسکریپتی از نوع floating point هستند و از استاندارد بین المللی IEEE 754 پیروی می کنند؛ این فرمت اعداد را در 64 بیت ذخیره می کند.

دقت اعداد در جاوا اسکریپت

اعداد صحیح (یعنی اعدادی که رقم اعشار و نقطه ی اعشار را ندارند) تا 15 رقم دقیق هستند. مثال:

توجه داشته باشید که پس از 15 رقم عدد ما دقیق نیست و به نوعی گرد شده است.

بیشترین تعداد رقم اعشار 17 می باشد اما قسمت اعشاری اعداد همیشه دقیق دقیق نیستند. مثال:

برای حل این مشکل می توانید ضرب و تقسیم کنید:

یک مثال کامل در این زمینه را مشاهده کنید:

خروجی کد را در ادیتور آنلاین جاوا اسکریپت مشاهده کنید.

هشدار مهم: در جلسات قبلی به شما فرق بین addition (جمع ریاضی) و concatenation (الحاق کردن یا به هم چسباندن) را گوشزد کردیم و توضیح دادیم که اگر عددی با رشته ای جمع شود، نتیجه این می شود که جاوا اسکریپت هر دو را به رشته تبدیل میکند و در کنار هم قرار می دهد. یکی از اشتباهات بسیار پرتکرار در این زمینه که همیشه در کتاب های آموزشی جاوا اسکریپت تذکر داده می شود، مثال زیر است:

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

حالا اگر هر دو رشته ما حاوی عدد باشند چه می شود؟ به مثال زیر دقت کنید:

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

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

خطای NaN چیست؟

خطای NaN که مخفف عبارت Not a Number (به معنی “یک عدد نیست”) می باشد زمانی رخ می دهد که عدد ما، یک عدد مجاز نباشد. به طور مثال اگر تلاش کنیم روی رشته ها عملیات ریاضی انجام دهیم، با خطای NaN مواجه خواهیم شد:

البته طبق قانونی که بالاتر گفتیم اگر رشته ی ما حاوی عدد باشد، جاوا اسکریپت آن را تبدیل می کند:

اگر مطمئن نیستید که یک مقدار خاص NaN است یا خیر می توانید از تابع گلوبال ()isNaN استفاده کنید:

نکته: اگر در هر عملیات ریاضی از NaN استفاده شود، بدون توجه به عدد دیگر، نتیجه NaN یا NaN به همراه Concatenation خواهد بود.

اعدا به صورت اشیاء

اعداد می توانند به صورت شیء هم باشند و برای این کار شما باید از کلمه ی new قبل از آن ها استفاده کنید:

var y = new Number(123);

تذکر: این مطلب فقط به این دلیل ذکر شد که شما با ان آشنا باشید. در عمل هیچ وقت اعداد را به صورت اشیاء در نیاورید چرا که زمان اجرای کد شما را کند کرده و از طرفی کار با کد را سخت می کند. همچنین در برخی از مرورگر ها باعث مشکلات زیادی می شود.

اعداد بر پایه ی 16

اگر قبل از عدد خود از 0x استفاده کنید، جاوا اسکریپت عدد شما را به عنوان یک عدد بر پایه ی 16 (hexadecimal) می خواند. مثال:

نکته: هیچ گاه قبل از عدد خود صفر نگذارید. علاوه بر اینکه چنین کاری بیهوده نویسی است و معنی ایجاد نمی کند، ممکن است باعث شود جاوا اسکریپت عدد شما را در مبنای 8 (octal) بشناسد و برای شما مشکلات فراوانی ایجاد کند. لقمه را دور سر خود نچرخانید و اعداد را ساده بنویسید: مثل 2 به جای 02

نکته: می توانید از دستور typeof برای بررسی نوع یک متغیر استفاده کنید. به طور مثال:

خروجی کد ما به ترتیب number و سپس object خواهد بود. چرا که x عدد است و y نیز یک شیء می باشد.

امیدوارم از این قسمت هم استفاده کرده باشید. در قسمت بعدی سراغ انواع دیگر data type ها (مانند boolean ها) خواهیم رفت.

در پناه حق.

ترتیبی که روکسو برای یادگیری مطالب سری آموزش جاوا اسکریپت | Javascript به شما توصیه می‌کند:

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.