میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

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

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

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

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

var x = ۱۲۳e5;    // ۱۲۳۰۰۰۰۰
var y = ۱۲۳e-5;   // ۰٫۰۰۱۲۳

اعداد جاوا اسکریپتی همیشه اعداد اعشار ۶۴ بیتی هستند

بر خلاف بسیاری از زبان های برنامه نویسی دیگر، جاوا اسکریپت انواع مختلفی از اعداد مانند اعداد صحیح (integers)، کوتاه (short)، بلند (long)، اعشار(floating-point) و غیره را تعریف نمی کند.

اعداد جاوا اسکریپت همیشه به صورت نماد علمی با دقت بالا، با توجه به استاندارد IEEE 754 ذخیره می شوند.

این فرمت اعداد را در ۶۴ بیت ذخیره می کند، بطوریکه که عدد اعشاری در بیت های ۰ تا ۵۱ ذخیره می شود، توان در بیت های ۵۲ تا ۶۲ و علامت در بیت ۶۳:

 

عدد اعشاریتوانعلامت
۵۲ بیت (۰ – ۵۱)۱۱ بیت(۵۲ – ۶۲)۱ بیت(۶۳)

دقت

عدد صحیح (عدد بدون علامت دوره یا نماد) تا ۱۵ رقم دقت دارد

var x = ۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹;            // x   = ۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹
var y = ۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹;          // y    =  ۱۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰

حداکثر تعداد رقم دهدهی ۱۷ است، اما محاسبه اعداد اعشار همیشه ۱۰۰٪ دقیق نیست:

var x = ۰٫۲ + ۰٫۱;         // x  =   ۰٫۳۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۴

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

var x = (0.2 * ۱۰ + ۰٫۱ * ۱۰) / ۱۰;       // x  = ۰٫۳

جمع کردن اعداد و رشته ها

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

اعداد جمع می شوند. رشته ها به هم می پیوندند

اگر شما دو عدد را جمع کنید، نتیجه یک عدد خواهد بود.

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

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

اشتباه رایج انتظار نتیجه ۳۰ از مثال زیر است:

var x = ۱۰;
var y = ۲۰;
var z = “The result is: “ + x + y;         //۱۰۲۰

اشتباه رایج دیگر این است که انتظار می رود نتیجه مثال زیر ۱۰۲۰۳۰ باشد:

var x = ۱۰;
var y = ۲۰;
var z = “۳۰”;
var result = x + y + z;     //۳۰۳۰

کامپایلر جاوا اسکریپت از چپ به راست کار می کند.

اول ۱۰ + ۲۰ شده است زیرا x و y هر دو عدد هستند.

سپس ۳۰ + “۳۰” به هم پیوند می شوند زیرا z یک رشته است.

رشته های عددی

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

var x = ۱۰۰;         // x is a number
var y = “۱۰۰”;

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

بعبارتی مثال زیر، کار خواهد کرد:

var x = “۱۰۰”;
var y = “۱۰”;
var z = x / y;       // z will be 10

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

اما این مثال کار نخواهد کرد:

در مثال آخر جاوا اسکریپت از اپراتور + برای پیوند دادن رشته ها استفاده می کند.

 

NaN – Not a Number (عدد نیست)

NaN یک کلمه رزرو شده ی جاوا اسکریپت است که نشان می دهد عدد مورد نظر یک عدد قانونی نیست.

تلاش برای انجام محاسبات با یک رشته غیر عددی نتیجه ی NaN (عدد نیست) را به دنبال خواهد داشت :

var x = ۱۰۰ / “Apple” // x will be NaN (Not a Number)

شما می توانید از تابع سراسری جاوا اسکریپت isNaN() برای فهمیدن اینکه یک مقدار، عدد هست یا خیر استفاده کنید

اگر true  برگرداند یعنی عدد نیست و بالعکس

var x = ۱۰۰ / “Apple”;
isNaN(x);                     // returns true because x is Not a Number

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

var x = NaN;
var y = ۵;
var z = x + y;         // z will be NaN

NaN یک عدد است: نتیجه ی typeof NaN بصورت number خواهد بود:

typeof NaN;            // returns “number”

 

بی نهایت

Infinity (or -Infinity) مقدار بازگشتی جاوا اسکریپت است اگر نتیجه محاسبات شما یک عدد بزرگتر از بزرگترین عدد ممکن در جاوا اسکریپت باشد.

var myNumber = ۲;
while (myNumber != Infinity) {   // Execute until Infinity
  myNumber = myNumber * myNumber;

}

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

Infinity یک عدد است: نتیجه ی typeof Infinity بصورتnumberخواهد بود.

typeof Infinity;     // returns “number”

هگزا دسیمال – Hexadecimal

جاوا اسکریپت، ثابت های عددی را به صورت هگزادسیمال تفسیر می کند اگر قبل از آنها ۰x بیاید.

var x = ۰xFF;        // x will be 255

هیچگاه عددی را با پیشوند صفر ۰ ننویسید (مثل ۰۷).
برخی از نسخه های جاوا اسکریپت، اعداد را به صورت اکتان در نظر می گیرند اگر با صفر پیشین نوشته شوند.

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

اما شما می توانید از تایع toString() برای خروجی گرفتن اعداد بصورت مبنای ۲ تا مبنای ۳۶ استفاده کنید.

هگزادسیمال مبنای ۱۶ است .دسیمال مبنای ۱۰ است .اکتال پایه ۸ است .باینری پایه ۲ است.

var myNumber = ۳۲;
myNumber.toString(10);  // returns 32
myNumber.toString(32);  // returns 10
myNumber.toString(16);  // returns 20
myNumber.toString(8);   // returns 40
myNumber.toString(2);   // returns 100000

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

به طور معمول اعداد جاوا اسکریپت ارزشهای ابتدایی ایجاد شده از لیترال ها (مقادیر دقیق و ثابت) هستند:

var x = 123;

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

var y = new Number(123);

 

اشیاء عددی را ایجاد نکنید. این کار سرعت اجرا را کاهش می دهد. کلمه کلیدی new کد را پیچیده می کند. این کار می تواند نتایج غیر منتظره ای ایجاد کند:

وقتی از عملگر == استفاده میکنید، اعداد یکسان، برابر هستند:

var x = ۵۰۰;
var y = new Number(500);           // (x == y)  is true because x and y have equal values

وقتی از عملگر === استفاده میکنید، اعداد یکسان، برابر نیستند، زیرا عملگر === انتظار دارد برابری هم در مقدار و هم در نوع باشد.

var x = ۵۰۰;
var y = new Number(500);        // (x === y) is false because x and y have different types

یا حتی بدتر اینکه اشیاء قابل مقایسه نیستند

var x = new Number(500);
var y = new Number(500);         // (x == y) is false because objects cannot be compared

همیشه به تفاوت بین (x==y) و (x===y) توجه داشته باشید .
مقایسه دو شیء جاوا اسکریپت همیشه مقدار false را باز می گرداند .

 

 

 

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

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟