در بخش اعداد جاوااسکریپت برخلاف سایر زبان های برنامه نویسی که دارای انواع نوع داده هستند تنها میتونیم یک نوع عدد داشته باشیم. همین نوع عدد می‌تواند بصورت اعشاری (decimal) یا بصورت عدد صحیح مثبت و منفی (integer) نوشته شود.

نمونه یک عدد اعشاری:

نمونه عدد صحیح:

عددی که خیلی بزرگ یا کوچک باشد را بصورت عدد نمایشی eNum یا e-Num بصورت اعشاری تعریف میکنیم.

مثال:

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

 

نحوه تقسیم بندی عدد در ۶۴ بیت

  • عدد کسر از عدد ۰ تا ۵۱ بیت در قالب ۵۲ بیت
  • توان عدد از بیت ۵۲ تا ۶۲ در قالب ۱۱ بیت
  • علامت ها مانند $ و var در ۱ بیت

 

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

دقت اعداد صحیح تا ۱۵ رقم بدون هیچ مشکلی محاسبه میشود.

مثال:

در اعداد اعشاری تا ۱۷ رقم محاسبه میشود ولی خب همیشه محاسبه نقطه اعشار بصورت ۱۰۰% دقیق نیست.

مثال:

برای ازبین بردن این ارقام اصلی باید آنها را در عدد ۱۰ ضرب کنیم سپس جمع کنیم.

مثال:

 

تذکر

در جاوااسکریپت از عملگر + در اعداد جهت جمع کردن اما در رشته برای اتصال دو مقدار استفاده میشود. حتی اگر رشته حاوی عدد باشد.

نمونه عدد واقعی:

نمونه عدد رشته ای:

حتی اگر یک طرف عملگر جمع عدد رشته ای باشد عملگر نقش اتصال را دارد.

مثال:

حتی در مثال زیر تبدیل به رشته می‌شود.

مثال:

در مثال زیر دو مقدار نخست ابتدا با هم جمع می‌شوند سپس بهم متصل میشوند.

مثال:

 

اعداد رشته ای

در جاوااسکریپت رشته ها نیز می‌توانند حاوی عدد باشند.

مثال:

در عملیات ریاضی بغیر از جمع کردن،جاوااسکریپت سعی میکند محاسبه را انجام دهد.

مثال:

اما عملیات ریاضی جمع در مقادیر رشته ای اتفاق نمی افتد.

مثال:

 

مقدار NaN

اگر در محاسبات ریاضی یک از طرف های عملگر رشته باشد یا مقداری باشد که عملیات ریاضی امکان پذیر نباشد مقدار NaN برگشت داده میشود. این واژه مخفف not a number است. یعنی عددی که عدد نیست.

مثال:

در جاوااسکریپت تابع سراسری برای بررسی nan بودن مقدار به نام isNaN وجود دارد.در صورت nan بودن مقدار true برگشت داده میشود.

مثال:

جمع یک عدد با nan مقدار nan برگشت می‌دهد.

مثال:

نوع داده NaN برابر با number است.

 

مقدار infinity

در صورتی که عدد ما بزرگتر از عدد معمول در جاوااسکریپت باشد مقدار infinity و infinity- برگشت می‌دهد.

مثال:

تقسیم هر عددی بر ۰ برابر با infinity است. در صورتی که عدد منفی باشد مقدار infinity- برگشت میدهد.

مثال:

نوع داده infinity برابر با number است.

مثال:

 

اعداد بر مبنای ۱۶ یا هگزادسیمال

مقادیری که با ۰x شروع شود عدد بر مبنای hex هستند.

مثال:

 

اعداد بر مبنای ۸ یا اکتال

مقادیری که با ۰ نوشته شوند بر مبنای اکتال هستند. بنابراین هیچ گاه عدد خود را بصورت ۰۷ ننویسید چون مبنای آن اکتال و خروجی آن متفاوت است.

 

اعداد در مبنای ۱۰ یا دسیمال یا اعشاری

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

مثال:

 

اعداد برمبنای باینری یا دودویی

این نوع عدد در محاسبات رایانه ای اتفاق میفتد. این نوع محاسبه را در دروس قبلی توضیح داده ایم. برای مشاهده نحوه محاسبه به بخش های قبلی عملگرها مراجعه کنید ‌

مثال:

میتوان با متد toString که از طریق تابع number در دسترس است مبنای نمایش عدد به دسیمال، هگزادسیمال، اکتال یا باینری تغییر داد.

مثال:

 

اعداد می‌توانند از نوع آبجکت باشند

اعداد در حالت عادی بصورت لیترال تعریف می‌شود.

مثال:

اما اگر تابع Number را با کلمه کلیدی new فراخوانی کنیم تبدیل به آبجکت می‌شود.

مثال:

نوع اعداد را هیچ وقت به آبجکت تغییر ندهید چون هیچ فرقی در دسترسی و استفاده از آن ندارد فقط سرعت اجرای اسکریپت شما را کاهش می‌دهد.
زمانی که با عملگر مقایسه ای == دو مقدار زیر با هم مقایسه می‌شوند نتیجه یکسان است.

مثال:

اما همین مقایسه اگر از نوع داده باشد مقدار false برگشت داده میشود.

مثال:

حتی مقایسه دو مقدار عددی از نوع آبجکت با هم برابر نیستند.

مثال:

 

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

برای کار کردن راحتتر با اعداد متدهایی در نظر گرفته شده است. در اینجا برخی از این متدها را نمایش میدهیم.
مقادیر اولیه مانند ۳٫۱۴ یا ۲۰۲۲ بدلیل ماهیت و لیترال بودنشان و به شکل آبجکت نبودنشان امکان تعریف و استفاده از متدها وجود ندارد.
اما جاوااسکریپت در هنگام استفاده از متدها و خصوصیات در اعداد اولیه با آنها همانند آبجکت برخورد می‌کند و میتوان از متدها و خصوصیات استفاده کرد.
تمامی متدهای مربوط به اعداد بر روی انواع اقسام اعداد قابل پیاده سازی هستند.

انواع حالت های نمایش اعداد عبارتند از:

  • مقدار لیترال
  • متغیرها
  • عبارت های ریاضی

 

تبدیل متغیرها به number

جاوااسکریپت دارای ۳ متد برای تبدیل متغیرها یا مقادیر با هر نوع داده ای به عدد یا number است. این متدها بعنوان متد زیرمجموعه تابع Number نیستند بلکه بعنوان متدهای عمومی شناخته می‌شوند. این متدها میتوانند توسط انواع داده‌ها مورد استفاده قرار بگیرند.
این سه متد عمومی برای تبدیل مقدار به عدد هستند:

 

لیست خصوصیت های اعداد در جاوااسکریپت

نام تابع توضیح نحوه نوشتن
خصوصیت NaN

این خصوصیت یک مقدار عددی که در واقع عدد نیست برگشت می دهد.
برای بررسی اینکه یک عدد NaN است یا خیر از دستور Number.isNaN یا NaN خالی استفاده کنید.

Number.NaN;
خصوصیت NEGATIVE_INFINITY

این خصوصیت یک عدد بی نهایت منفی را برگشت می دهد. این مقدار پایین تر از هر مقدار عدد است. در واقع کوچکتر از MIN_VALUE.
این خصوصیت تنها از طریق تابع Number قابل دسترس است و نمیتوان از طریق متغیر به آن دسترسی پیدا کرد. در این حالت مقدار undefined برگشت می‌دهد.

Number.NEGATIVE_INFINITY;
خصوصیت POSITIVE_INFINITY

این خصوصیت یک عدد بی نهایت مثبت را برگشت می دهد. این مقدار بالاتر از هر مقدار عدد است. در واقع بزرگتر از MAX_VALUE.
این خصوصیت تنها از طریق تابع Number قابل دسترس است و نمیتوان از طریق متغیر به آن دسترسی پیدا کرد. در این حالت مقدار undefined برگشت می‌دهد.

Number.POSITIVE_INFINITY;
خصوصیت MIN_VALUE این خصوصیت کوچکترین عدد مثبت قابل نمایش در جاوااسکریپت را برگشت میدهد. این مقدار حدود ۵e-324 است. مقدار کوچکتر از این مقدار برابر با ۰ است.
این خصوصیت تنها از طریق تابع Number قابل دسترس است و نمیتوان از طریق متغیر به آن دسترسی پیدا کرد. در این حالت مقدار undefined برگشت می‌دهد.

Number.MIN_VALUE;

خصوصیت MAX_VALUE

این خصوصیت بزرگترین عدد قابل نمایش در جاوااسکریپت را برگشت میدهد. این مقدار حدود ۱٫۷۹۷۶۹۳۱۳۴۸۶۲۳۱۵۷e+308 است. مقدار بزرگتر از این مقدار برابر با infinity است.
این خصوصیت تنها از طریق تابع Number قابل دسترس است و نمیتوان از طریق متغیر به آن دسترسی پیدا کرد. در این حالت مقدار undefined برگشت می‌دهد.

Number.MAX_VALUE;

 

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

نام تابع توضیح نحوه نوشتن
تابع toString

این تابع عدد شما را به رشته تبدیل میکند. مقادیر عددی شما میتواند از هر نوعی باشد.

number.toString(radix);
تابع toExponential

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

number.toExponential(x);
تابع toFixed

این تابع عدد شما را به رشته تبدیل میکند.

این تابع در اعداد اعشاری بسته به پارامتری که دریافت می کند بعد از علامت اعشاری شمارش کرده و مابقی اعداد مانده در آخرین عدد رند می شود.در صورتی که عدد وارد شده در پارامتر بزرگتر از طول عدد باشد در انتها رقم ۰ را قرار می دهد.

number.toFixed(x);
تابع toPrecision این تابع عدد شما را به رشته تبدیل میکند. این تابع همانطور که از نامش مشخص است دارای دقت بالایی است.

این تابع براساس پارامتری که در قالب عدد دریافت می‌کند عدد نهایی را با طول مشخص برگشت می‌دهد.

number.toPrecision(x);
تابع valueOf

این تابع مقدار اولیه عدد را برگشت می دهد.
مقدار اولیه می تواند از نتیجه یک عبارت ریاضی برگشت داده شود.

number.valueOf();
تابع isNaN

این تابع بررسی می‌کند مقدار شما عدد نیست در صورت عدد نبودن مقدار true برگشت می‌دهد. مقدار بازگشتی یک مقدار بولین است.
این تابع با تابع عمومی isNaN متفاوت است و آن این است که در تابع عمومی ابتدا مقدار را به عدد تبدیل کرده سپس آن را بررسی می‌کند که not a number است یا خیر.

Number.isNaN(value);
تابع toLocaleString این تابع عدد شما را به رشته تبدیل می کند.

هدف از استفاده از این تابع تبدیل عدد شما به یک فرمت مشخص براساس تنظیمات محلی در رایانه است.

از این متد میتوان در ۳ رقم جدا کردن عدد استفاده شود

number.toLocaleString(locales, options);

دیدگاه خود را بیان کنید

این ایمیل برای عموم منتشر نمی شود