اعداد در 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:
دقت
عدد صحیح (عدد بدون علامت دوره یا نماد) دقیق تا 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 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)
مشاهده مثالبا این حال، اگر رشته حاوی مقدار عددی باشد، نتیجه یک شماره خواهد بود:
var x = 100 / "Apple"; // x will be NaN (Not a Number)
مشاهده مثالشما می توانید از تابع جاوا اسکریپت global () برای پیدا کردن یک مقدار یک عدد استفاده کنید:
var x = 100 / "10"; // x will be 10
مشاهده مثالمراقب NaN باشید. اگر از یک NaN در یک عملیات ریاضی استفاده می کنید، نتیجه NaN نیز خواهد بود:
var x = 100 / "Apple";
isNaN(x); // returns true because x is Not a Number
مشاهده مثالیا نتیجه ممکن است یک پیوند باشد:
var x = NaN;
var y = 5;
var z = x + y; // z will be NaN
مشاهده مثالNaN یک عدد است: typeof NaN تعداد عدد:
var x = NaN;
var y = "5";
var z = x + y; // z will be NaN5
مشاهده مثالبی نهایت
بی نهایت (یا Infinity) مقدار جاوا اسکریپت است اگر شما یک عددی خارج از بزرگترین تعداد ممکن را محاسبه کنید نشان میدهد.
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 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
مشاهده مثالهنگام استفاده از اپراتور ===، عددهای برابر نیستند، زیرا اپراتور === انتظار دارد که برابری را در هر دو نوع و مقدار در انتظار داشته باشد.
var x = 500;
var y = new Number(500);
// (x == y) is true because x and y have equal values
مشاهده مثالیا حتی بدتر اشیاء قابل مقایسه نیستند
var x = 500;
var y = new Number(500);
// (x === y) is false because x and y have different types
مشاهده مثال
نظر شما
>