اعداد در JavaScript

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

اعداد در JavaScript
 var x = 3.14;    // A number with decimals
var y = 3;       // A number without decimals 
مشاهده مثال

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

اعشاری
 var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123 
مشاهده مثال

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

بر خلاف بسیاری از زبان های برنامه نویسی دیگر، جاوا اسکریپت انواع مختلفی از اعداد مانند اعداد صحیح، کوتاه، بلند، نقطه شناور و غیره را تعریف نمی کند.
اعداد جاوا اسکریپت همیشه به عنوان دو نقطه دقت با توجه به استاندارد بین المللی IEEE 754 ذخیره می شوند.
این فرمت اعداد را در 64 بیت ذخیره می کند، جایی که عدد (کسری) در بیت های 0 تا 51 ذخیره می شود، نمایش در بیت های 52 تا 62 و علامت در بیت 63:

مقدار
نمایشگر
نشانه
52 bits (0 - 51) 
11 bits (52 - 62)
1 bit (63)

دقت

عدد صحیح (عدد بدون علامت دوره یا نماد) دقیق تا 15 رقم است.

تعداد رقم
var x = 999999999999999;   // x will be 999999999999999
var y = 9999999999999999;  // y will be 10000000000000000 
مشاهده مثال

حداکثر تعداد اعشار 17 است، اما ریاضی در اعشار همیشه 100٪ دقیق نیست:

تعداد اعشاری
 var x = 0.2 + 0.1;         // x will be 0.30000000000000004 
مشاهده مثال

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

اعشاری با عملگر
 var x = (0.2 * 10 + 0.1 * 10) / 10;       // x will be 0.3 
مشاهده مثال

اضافه کردن اعداد و رشته ها

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

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

عدد و رشته
 var x = 10;
var y = 20;
var z = x + y;           // z will be 30 (a number) 
مشاهده مثال

اگر شما دو رشته اضافه کنید، نتیجه یک پیوند رشته خواهد بود:

دو رشته
 var x = "10";
var y = "20";
var z = x + y;           // z will be 1020 (a string) 
مشاهده مثال

اگر یک عدد و یک رشته اضافه کنید، نتیجه یک پیوند رشته خواهد بود:

عدد و رشته
 var x = 10;
var y = "20";
var z = x + y;           // z will be 1020 (a string) 
مشاهده مثال

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

رشته وعدد
 var x = "10";
var y = 20;
var z = x + y;           // z will be 1020 (a string) 
مشاهده مثال

اشتباه رایج این است که انتظار می رود این نتیجه 30 باشد

دو عدد و رشته
var x = 10;
var y = 20;
var z = "The result is: " + x + y;
مشاهده مثال

اشتباه رایج انتظار این نتیجه را 102030 در نظر بگیرید

دو عدد و رشته
var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;
مشاهده مثال

نکته: کامپایلر جاوا اسکریپت از چپ به راست کار می کند.
ابتدا 10 + 20 اضافه می شود زیرا x و y هر دو عدد هستند.
سپس 30 + "30" پیوند می شود زیرا z یک رشته است.

رشته های عددی

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

var x = 100; // x is a number
var y = "100"; // y is a string

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

تبدیل رشته به عدد
 var x = "100";
var y = "10";
var z = x / y;       // z will be 10 
مشاهده مثال

این نیز کار خواهد کرد:

تبدیل رشته به عدد
 var x = "100";
var y = "10";
var z = x * y;       // z will be 1000 
مشاهده مثال

و این کار خواهد کرد:

تبدیل رشته به عدد
 var x = "100";
var y = "10";
var z = x * y;       // z will be 1000 
مشاهده مثال

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

تبدیل رشته به عدد
 var x = "100";
var y = "10";
var z = x - y;       // z will be 90 
مشاهده مثال

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

NaN - یک شماره نیست

NaN یک واژه ذخیره شده جاوا اسکریپت است که نشان می دهد که عدد یک عدد قانونی نیست.

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

تبدیل رشته به عدد با +
 var x = "100";
var y = "10";
var z = x + y;       // z will not be 110 (It will be 10010) 
مشاهده مثال

با این حال، اگر رشته حاوی مقدار عددی باشد، نتیجه یک شماره خواهد بود:

NaN
var x = 100 / "Apple";  // x will be NaN (Not a Number)
مشاهده مثال

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

NaN
 var x = 100 / "10";     // x will be 10 
مشاهده مثال

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

isNaN
var x = 100 / "Apple";
isNaN(x);               // returns true because x is Not a Number 
مشاهده مثال

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

NaN و عدد
 var x = NaN;
var y = 5;
var z = x + y;         // z will be NaN 
مشاهده مثال

NaN یک عدد است: typeof NaN تعداد عدد:

NaN و عدد
 var x = NaN;
var y = "5";
var z = x + y;         // z will be NaN5 
مشاهده مثال

بی نهایت

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

typeof NaN
typeof NaN;            // returns "number" 
مشاهده مثال

تقسیم بر 0 (صفر) همچنین بی نهایت را تولید می کند:

بی نهایت
var myNumber = 2;
while (myNumber != Infinity) {          // Execute until Infinity
    myNumber = myNumber * myNumber;
}
مشاهده مثال

بی نهایت یک عدد است: typeof infinity تعداد را باز میگرداند.

تقسیم بر صفر
 var x =  2 / 0;          // x will be Infinity
var y = -2 / 0;          // y will be -Infinity 
مشاهده مثال

هگزادسیمال

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

typeof بی نهایت
typeof Infinity;        // returns "number" 
مشاهده مثال

هرگز یک عدد صفر پیشین (مانند 07) را ننویسید.

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

هگزادسیمال
 var x = 0xFF;           // x will be 255 
مشاهده مثال

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

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

var x = 123;

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

var y = new Number(123);

هگزادسیمال
var myNumber = 128;
myNumber.toString(16);  // returns 80
myNumber.toString(8);   // returns 200
myNumber.toString(2);   // returns 10000000
مشاهده مثال

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

عدد شی
 var x = 123;
var y = new Number(123);

// typeof x returns number
// typeof y returns object 
مشاهده مثال

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

== operator
 var x = 500;             
var y = new Number(500);

// (x == y) is true because x and y have equal values 
مشاهده مثال

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

=== operator
 var x = 500;             
var y = new Number(500);

// (x === y) is false because x and y have different types 
مشاهده مثال

 

نظر شما

مقالات و دروس

به خبرنامه مدرسه طراحی وب ایران بپیوندید

   
   
عضویت
پیام تستی برای گروه نرم افزاری وب مهراز