به آموزشگاه مجازی سینا خوش آمدید!

آموزش اعداد در جاوا اسکریپت

امتیاز
(0)

بررسی نوع‌های عددی

جاوا اسکریپت تنها یک نوعِ عددی دارد. 

اعداد می‌توانند با یا بدونِ اعشار نوشته شوند. 


مثال شماره 1

let x = 3.14;    // یک عدد با اعشار
let y = 3;       // یک عدد بدون اعشار
امتحان کنید

اعداد بسیار بزرگ یا بسیار کوچک می‌توانند با نماد علمی(توان) نوشته شوند:

مثال شماره 2

let x = 123e5;    // 12300000
let y = 123e-5;   // 0.00123
امتحان کنید

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

برخلاف بسیاری از دیگر زبان‌های برنامه نویسی، جاوا اسکریپت نوع‌های عددیِ مختلف مانند integer و short و long و floating-point را تعریف نمی‌کند. 

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

این فرمت، اعداد را در 64 بیت ذخیره می‌کند به طوری که عدد (کسر) در بیت‌های 0 تا 51 ذخیره می‌شود و توان در بیت‌های 52 تا 62 و علامت در بیت 63 ذخیره می‌شود.

علامت توان مقدار
1 بیت(63) 11 بیت(52 - 62) 52 بیت (0 - 51)

 


اکثر زبان‌های برنامه نویسی نوع‌هایِ عددیِ زیادی دارند:

اعداد صحیح(integer):

byte (8-bit), short (16-bit), int (32-bit), long (64-bit)

اعداد حقیقی(Real یا ممیز شناور):

float (32-bit), double (64-bit)

اعداد جاوا اسکریپت همواره به صورت double(ممیز شناورِ 64 بیت) هستند. 


دقتِ اعداد صحیح(Integer Precision)

دقت اعداد صحیح(یعنی اعدادی که نقطه یا همان ممیز اعشاری، یا توان ندارند) تا 15 رقم می‌باشد. 

مثال شماره 3

let x = 999999999999999;   // x will be 999999999999999
let y = 9999999999999999;  // y will be 10000000000000000 
امتحان کنید

حداکثر تعداد اعشار 17 رقم می‌باشد. 


دقت ممیز شناور(Floating Precision)

مثال شماره4

محاسبات ممیز شناور 100 درصد دقیق نیستند:

let x = 0.2 + 0.1;
امتحان کنید

مثال شماره 5

برای حل مشکل بالا، می توانیم اعداد را در 10 ضرب کنیم و به صورت زیر بر 10 تقسیم کنیم:

 let x = (0.2 * 10 + 0.1 * 10) / 10; 
امتحان کنید

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

هشدار!! 

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

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


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

مثال شماره 6

let x = 10;
let y = 20;
let z = x + y;
امتحان کنید

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

مثال شماره 7

let x = "10";
let y = "20";
let z = x + y;
امتحان کنید

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

مثال شماره 8

let x = 10;
let y = "20";
let z = x + y;
امتحان کنید

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

مثال شماره 9

let x = "10";
let y = 20;
let z = x + y;
امتحان کنید

یک اشتباه متداول در جاوا اسکریپت این است که فکر کنیم نتیجه ی کد زیر، برابر با 30 خواهد شد:

مثال شماره 10

let x = 10;
let y = 20;
let z = "The result is: " + x + y;
امتحان کنید

یک اشتباه متداول این است که فکر کنیم نتیجه ی کد زیر برابر با 102030 خواهد بود:

مثال شماره 11

let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
امتحان کنید

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

ابتدا جمعِ 10 + 20 انجام می‌شود، زیرا x و y هردو، عدد هستند. 

سپس الحاق 30 + "30" انجام می‌شود، زیرا z یک رشته است. 


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

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

let x = 100;         // یک عدد است x 

let y = "100";       // یک رشته است y

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

این مثال به درستی کار می‌کند:

مثال شماره 12

let x = "100";
let y = "10";
let z = x / y;
امتحان کنید

این مثال نیز به درستی کار می‌کند:

مثال شماره 13

let x = "100";
let y = "10";
let z = x * y;
امتحان کنید

این مثال نیز به درستی کار می کند:

مثال شماره 14

let x = "100";
let y = "10";
let z = x - y;
امتحان کنید

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

مثال شماره 15

let x = "100";
let y = "10";
let z = x + y;
امتحان کنید

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


بررسی مقدار NaN مخفف Not a Number(عدد نیست)

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

اگر سعی کنیم با استفاده از یک رشته‌ی غیرِعددی، محاسباتی را انجام دهیم، نتیجه یک مقدار NaN خواهد بود(یعنی نتیجه یک عدد نخواهد بود):

مثال شماره 16

let x = 100 / "Apple";
امتحان کنید

اما اگر رشته ی مورد نظر، عددی باشد(یعنی یک عدد بین علامت های نقل قول باشد) نتیجه‌ی تقسیم یک عدد خواهد بود:

مثال شماره 17

let x = 100 / "10";
امتحان کنید

ما می‌توانیم لز تابع سراسری isNaN() برای فهمیدن اینکه آیا یک مقدار، یک عدد نیست(is not a number) استفاده کنیم:

مثال شماره 18

let x = 100 / "Apple";
isNaN(x);
امتحان کنید

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

مثال شماره 19

let x = NaN;
let y = 5;
let z = x + y;
امتحان کنید

یا اینکه نتیجه ممکن است یک الحاق به صورت NaN5 باشد:

مثال شماره 20

let x = NaN;
let y = "5";
let z = x + y;
امتحان کنید

NaN یک عدد(number) است: زیرا دستور typeof NaN مقدار number را برمی‌گرداند:

مثال شماره 21

typeof NaN;
امتحان کنید

بی‌نهایت یا Infinity در جاوا اسکریپت

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

مثال شماره 22

let myNumber = 2;
// اجرا تا بی نهایت
while (myNumber != Infinity) {
  myNumber = myNumber * myNumber;
}
امتحان کنید

تقسیم بر 0 نیز باعث ایجاد شدن Infinity می‌شود:

مثال شماره 23

let x =  2 / 0;
let y = -2 / 0;
امتحان کنید

مقدار Infinity یک عدد است: زیرا دستور typeof Infinity مقدار number را برمی گرداند:

مثال شماره 24

 typeof Infinity; 
امتحان کنید

مقادیر هگزادسیمال در جاوا اسکریپت(اعداد در مبنای 16)

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

مثال شماره 25

 let x = 0xFF; 
امتحان کنید

هرگز در جلوی یک عدد، یک 0 را قرار ندهید(مانند 07).

اگر در جلوی یک عدد، یک 0 قرار داده شود، زیرا برخی از نسخه‌های جاوا اسکریپت آن را بعنوان یک عدد اُکتال(مبنای 8) در نظر می گیرند. 


جاوا اسکریپت به طور پیش فرض، اعداد را در مبنای 10 (دهدهی یا دسیمال) نشان می‌دهد. 

اما ما می‌توانیم با استفاده از متد toString() اعداد را از مبنای 2 تا مبنای 36 بعنوان خروجی تبدیل کنیم. 

هگزادسیمال مبنای 16 است. دسیمال یا اعشاری در مبنای 10 است. اُکتال در مبنای 8 است. باینری در مبنای 2 است. 

مثال شماره 26

let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(12);
myNumber.toString(10);
myNumber.toString(8);
myNumber.toString(2);
امتحان کنید

اعداد جاوا اسکریپت بعنوان آبجکت ها

به طور معمول، اعدادِ جاوا اسکریپت، یک سری مقادیرِ اولیه محسوب می شوند که از لیترال‌ها(literals) ایجاد شده اند:

let x = 123;

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

 let y = new Number(123);

مثال شماره 27

let x = 123;
let y = new Number(123);
امتحان کنید

آبجکت‌های Number را ایجاد نکنید. 

کلمه‌ی کلیدی new کدها را پیچیده‌تر می‌کند و سرعت اجرا را کُند می کند. 

آبجکت‌های Number می‌توانند نتایج غیرمنتظره ایجاد کنند:

مثال شماره 28

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

let x = 500;
let y = new Number(500);
امتحان کنید

مثال شماره 29

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

let x = 500;
let y = new Number(500);
امتحان کنید

به تفاوت بین (x==y) و (x===y) توجه کنید. 

مثال شماره 30

ارزش (x == y) برابر با true است یا false?

let x = new Number(500);
let y = new Number(500);
امتحان کنید

مثال شماره 31

ارزش (x == y) برابر با true است یا false?

let x = new Number(500);
let y = new Number(500);
امتحان کنید

مقایسه‌ی دو آبجکت جاوا اسکریپت همواره مقدار false را برمی گرداند. 

 


منبع: www.w3schools.com/js

 

  • بازدید: 42

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال