این آموزش در تاریخ ۱۴۰۱/۰۳/۱۹ آپدیت شده است.
کار با اعداد یا Numbers در جاوااسکریپت
سلام خدمت تمامی دوستان و همراهان محترم سایت آموزشی فری لرن ، امیدوارم که حال همگیتون خوب باشه. لطفا در ادامه با آموزش کار با اعداد یا Numbers در جاوااسکریپت با من همراه باشید.

Free-Learn
آنچه در این جلسه میخوانید :
- 1 اعداد همیشه در نقطه اعشار ۶۴ بیت ذخیره میشوند
- 2 کار با اعداد یا Numbers در جاوااسکریپت
- 3 اعداد در شکل صحیح یا Integer
- 4 اعداد در شکل اعشاری یا Decimals
- 5 اعداد در شکل هگزادسیمال و اکتال
- 6 اعداد در شکل نمایی / علمی یا Exponential
- 7 میزان دقت / درستی اعداد
- 8 اعداد در قالب رشته یعنی چی؟
- 9 تبدیل اعداد رشته ای به اعداد صحیح
- 10 خروجی NaN در جاوااسکریپت
- 11 خروجی بی نهایت یا Infinity در جاوااسکریپت
- 12 اعداد میتونن شئ یا Object باشند
اعداد همیشه در نقطه اعشار ۶۴ بیت ذخیره میشوند
جاوااسکریپت برخلاف دیگر زبان های برنامه نویسی ، نمیتونه اعداد رو در انواع مختلفی ( مثه نوع Integers یا Short یا Long و … ) تعریف و نگهداری کنه.
همونطور که در جلسات قبلی ( آموزش کار با انواع داده ها یا Data Types در JS ) متوجه شدیم، جاوااسکریپت فقط ۱ نوع عددی میتونه داشته باشه ، که این ۱ نوع حالا ممکنه با اعشار باشه یا بدون اعشار.
|
1 2 |
var a = 10; // بدون اعشار var b = 5.4; // با اعشار |
جاوااسکریپت همیشه با توجه به استاندارد IEEE 754 اعداد رو در مبنای ۲ ( دودویی ) ۶۴ بیتی با ۲ برابر دقت ذخیره میکند، که در این قالب ( فرمت ) عدد کسر ( Fraction ) در ۵۲ بیت ذخیره میشود و توان ( Exponent ) در ۱۱ بیت و علامت ها ( مثه var یا $ و… ) در ۱ بیت ذخیره میشوند.
Free-Learn
کار با اعداد یا Numbers در جاوااسکریپت
در ادامه میخوایم با اعداد یا Numbers در JS آشنا بشیم و ببینیم اصلا چجوری میشه اعداد رو تعریف کرد و یا چجوری میشه نوع یک عدد ( مثلا بدون اعشار یا اعشاری و… ) رو مشخص کرد.
همونطور که بارها اشاره کردیم در جاوااسکریپت داده های عددی فقط یک نوع دارند ، حال همین ۱ نوع رو ما میتونیم در شکل های مختلف تعریف کنیم، مثلا یک عدد صحیح ( Integer ) ، اعشاری ( Decimals ) ، هگزادسیمال ( Hexadecimal ) ، اکتال ( مبنای هشت یا Octal ) ، نمایی / علمی ( Exponential ) باشند.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<script> // از نوع صحیح // یا از نوع ده دهی - مبنای 10 var a = 100; // از نوع اعشاری var b = 5.5; // از نوع هگزادسیمال var c = 0xa; // از نوع نمایی var d = 5e5; // از نوع اکتال - مبنای هشت var e = 030; document.write("a = " + a); document.write("<br>"); document.write("b = " + b); document.write("<br>"); document.write("c = " + c); document.write("<br>"); document.write("d = " + d); document.write("<br>"); document.write("e = " + e); </script> |
Free-Learn
اعداد در شکل صحیح یا Integer
یعنی در کل همون نوع بدون اعشار یه عدد خب مشخصه دیگه ، در این حالت اعداد بدون اعشار تعریف می شوند، اعدادی مثه ۳ , ۱۰ , ۴۲۲ , ۳۳- و.. میتونن یک عدد در شکل صحیح یا بدون اعشار باشند.
مثال : جمع / به اضافه کردن ۲ عدد صحیح ( بدون اعشار )
|
1 2 3 4 5 6 7 |
<script> var myNumber1 = 5; var myNumber2 = 15; document.write( myNumber1 + myNumber2 ); </script> |
Free-Learn
اعداد در شکل اعشاری یا Decimals
در این نوع، اعداد بصورت اعشاری مثه ۲٫۲ تعریف میشوند، که برای گذاشتن اعشار باید از نقطه ( دات یا . ) استفاده کرد.
مثال : جمع / به اضافه کردن ۲ عدد اعشاری ( با اعشار )
|
1 2 3 4 5 6 7 |
<script> var myNumber1 = 3.5; var myNumber2 = 2.5; document.write( myNumber1 + myNumber2 ); </script> |
Free-Learn
اعداد در شکل هگزادسیمال و اکتال
اگه با مبناهای اعداد در برنامه نویسی ها آشنا باشید، میدونید که اعداد در مبناهای مختلف وجود دارند، مثلا مبنای ۲ ( یا Binary ) یا مبنای ۱۶ ( یا Hexadecimal ) ، مبنای ۱۰ ( یا Decimal ) ، مبنای ۸ ( یا Octal )
حال ما میتونیم از همین مبناها در جاوااسکریپت استفاده کنیم، یعنی میشه یه عدد رو مثلا در مبنای دودویی ( مبنای ۲ یا باینری یا Binary ) تعریف کرد و از آن استفاده کرد.
مثال شماره ۱ : برنامه ای که یک عدد صحیح از کاربر دریافت و سپس عدد دریافت شده رو به مبناهای ۱۰ , ۸ , ۱۶ , ۲ تبدیل نماید.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function convert(){ var un ,unp , rs1 , rs2 , rs3 , rs4; un = document.getElementById("user_number").value; unp = parseInt(un); rs1 = document.getElementById("result1"); rs2 = document.getElementById("result2"); rs3 = document.getElementById("result3"); rs4 = document.getElementById("result4"); if( un=="" ){ alert("لطفا یه عدد وارد کن"); } else{ rs1.innerHTML = unp.toString(10); rs2.innerHTML = unp.toString(8); rs3.innerHTML = unp.toString(16); rs4.innerHTML = unp.toString(2); } } |
Free-Learn
اعداد در شکل نمایی / علمی یا Exponential
در این حالت ما میتونیم اعداد رو در قالب یه نماد علمی که بهش میگن نمایی یا Exponential به نمایش درآوریم، یعنی اعداد خلی بزرگ و یا خیلی کوچک رو میتونیم خیلی راحت با این نماد به نمایش درآوریم.
شکل کلی استفاده از این نماد بصورت زیر می باشد :
|
1 2 |
e [ تعداد ارقام صفر ] // برای اعداد مثبت e-[ تعداد ارقام اعشار ] // برای اعداد اعشاری |
مثال شماره ۱ : استفاده در اعداد مثبت ( ۵ که میشه ۵ ، و اون e یعنی حالت نمایی و ۵ جلوش یعنی تعداد ارقام صفرها ) پس باید در خروجی ۵۰۰۰۰۰ چاپ بشه، به همین سادگی.
|
1 2 3 4 5 6 |
<script> var MyNumber = 5e5; document.write(MyNumber); </script> |
مثال شماره ۲ : مشخص کردن تعداد ارقام اعشار
|
1 2 3 4 5 6 7 |
<script> // اون 5 میشه تعداد ارقام اعشار var MyNumber = 5e-5; document.write(MyNumber); </script> |
Free-Learn
میزان دقت / درستی اعداد
دقت اعداد صحیح ( به جز اعداد نمایی ) تا ۱۵ رقم بدون هیچ مشکلی محاسبه میشود و در اعداد اعشاری تا ۱۷ رقم محاسبه میشود ولی خب همیشه محاسبه نقطه اعشار بصورت ۱۰۰% دقیق نیست.
مثال شماره ۱ : نمایش اعداد صحیح تا ۱۵ رقم
|
1 2 3 4 5 6 7 |
<script> var Number_1 = 999999999999999; // رقم15 var Number_2 = 9999999999999999; // 16رقم document.write( Number_1 + "<br>" + Number_2 ); </script> |
مثال شماره ۲ : جمع / به اضافه کردن ۲ عدد اعشاری با همدیگه ( همونطور که اشاره کردم محاسبه اینجور اعداد دقت ۱۰۰% ندارند )
|
1 2 3 4 5 6 |
<script> document.write( 0.2 + 0.1 ); // 0.30000000000000004 خروجی میشه </script> |
مثال شماره ۳ : رُند کردن و بالابردن دقت نتیجه مثال شماره ۲ با استفاده از عمل ضرب و تقسیم
|
1 2 3 4 5 6 |
<script> var MyNumber = (0.2 * 10 + 0.1 * 10) / 10; document.write(MyNumber); </script> |
Free-Learn
اعداد در قالب رشته یعنی چی؟
در ادامه ی آموزش کار با اعداد یا Numbers در جاوااسکریپت میخوایم ببینیم یک عدد چجوری میتونه در قالب یک رشته باشه ، و یا اصلا آیا اعداد میتونن رشته باشند یا خیر؟!
بطور کلی وقتی یک عدد رو درون دابل کوتیشن یا ” ” یا تک کوتیشن یا ‘ ‘ قرار بدیم میشه یه رشته ، یعنی دیگه اون عدد در معنای واقعی یک عدد نیست بلکه رشته هست و جاوااسکریپت اونو به عنوان رشته میبینه.
|
1 2 |
var a = "40"; // این یک رشته هست var b = 40; // این یک عدد هست |
در نتیجه اگه مثلا در همین مثال بالا من بخوام متغیر a رو با متغیر b جمع کنم ، جمع ریاضی نمیشن بلکه بهم پیوند میخورند ( یا بهم میچسبن )
مثال : جمع کردن یک رشته با عدد
|
1 2 3 4 5 6 7 8 |
<script> var Number_1 = 10; var Number_2 = 5; var Text = "Free-Learn"; document.write( Text + Number_1 + Number_2 ); </script> |
مثال شماره ۱ : جمع کردن ۲ عدد که در قالب رشته هستند ( باهم جمع نمیشن بلکه میچسبن بهم )
|
1 2 3 4 5 6 7 |
<script> var myNumber1 = "20"; var myNumber2 = "5"; document.write( myNumber1 + myNumber2 ); </script> |
مثال شماره ۲ : ضرب و تفریق کردن ۲ عدد که در قالب رشته هستند ( مشکلی نداره و عمل میکنه، فقط برای جمع عمل نمیکنه )
|
1 2 3 4 5 6 7 8 9 10 |
<script> var MyNumber_1 = "2"; var MyNumber_2 = "5"; document.write( MyNumber_1 * MyNumber_2 ); document.write("<br>"); document.write( MyNumber_2 - MyNumber_1 ); </script> |
Free-Learn
تبدیل اعداد رشته ای به اعداد صحیح
خب شاید من بخوام مثلا ۲ عدد از کاربر با استفاده از اینپوت ( Input ) دریافت کنم و سپس همین ۲عدد رو باهمدیگه مثلا جمع و تفریق و ضرب و تقسیم کنم ، خب باید چکار کنم؟!
- مشکل
هرچیزی که درون اینپوت ( Input ) وارد شه به عنوان رشته حساب میشه ، در نتیجه اگه کاربر ۲ عدد وارد کند بجای اینکه باهم جمع بشن بهم پیوند میخورند. ( البته فقط برای جمع کردن این مشکل هست وگرنه برای ضرب و تفریق و تقسیم مشکلی نداره )
- راه حل
ما باید بتونیم رشته رو تبدیل به عدد کنیم، بعدش دیگه عمل جمع بدون مشکل انجام میشه چون دیگه اون اعداد رشته نیستند بلکه عدد در معنای واقعی هستند.
برای تبدیل رشته به عدد میتونیم از متدهای ()Number یا ()parseInt استفاده نماییم ، که در جلسه بعدی با این متدها بطور کامل آشنا خواهید شد.
مثال شماره ۱ : دریافت ۲ عدد صحیح از کاربر توسط تگ Input و سپس جمع ( + ) کردن اعداد
|
1 2 3 4 5 6 7 |
function haseljame(){ var number1 , number2 , result; number1 = parseInt(document.getElementById("num1").value); number2 = parseInt(document.getElementById("num2").value); result = document.getElementById("result"); result.innerHTML = number1 + number2; } |
Free-Learn
خروجی NaN در جاوااسکریپت
یه کلمه به اسم NaN داریم ، در کل اینو بدونید که این کلمه بخودی خود عدد نیست، نوعش ( یا Type ش ) عددی هست ولی خودش و ماهیتش عدد نیست، بطور کلی یه کلمه رزرو شده در جاوااسکریپت می باشد که نشون میده یک عدد از نظر قانونی عدد نیست.
فرض میکنیم دستوراتی همانند مثال زیر داشته باشیم : یعنی میخوایم متغیر a رو که عدد ۱۰ هست بر متغیر b که رشته اونم نه رشته ی عددی بلکه رشته متنی هست تقسیم کنیم ، خب تموم شد رفت همین یعنی NaN
|
1 2 3 4 5 6 7 8 |
<script> var Number_1 = 10; var Number_2 = "test"; document.write( Number_1 / Number_2 ); // NaN خروجی میشه </script> |
یعنی درکل هر موقع در برنامه هاتون خروجی NaN داد ، این یعنی یک طرفه محاسبات متن ( یا رشته ) بوده و داره میگه آقا نمیشه که مثلا یک عدد بروی متن تقسیم شود یا مثلا ضرب و تفریق شود.
Free-Learn
خروجی بی نهایت یا Infinity در جاوااسکریپت
کلمه Infinity در لغت یعنی بی نهایت ، در جاوااسکریپت وقتی نتیجه یه محاسبه خارج از محدوده جاوااسکریپت باشه خروجی میشه Infinity ( مثبت ) یا Infinity- ( منفی )
- تقسیم بر ۰ هم Infinity میشه
وقتی یه عدد صحیح مثبت یا منفی تقسیم بر ۰ بشه، در خروجی Infinity تولید میشه.
|
1 2 3 4 5 6 7 8 9 10 |
<script> var Number_1 = 5 / 0; var Number_2 = -5 / 0; document.write(Number_1); document.write("<br>"); document.write(Number_2); </script> |
Free-Learn
اعداد میتونن شئ یا Object باشند
اعداد هم همانند رشته ها ( که در جلسات قبلی خوندیم ) میتونن بصورت یک شئ تعریف بشن و مورد استفاده قرار بگیرند، ولی خب شما سعی کنید از این روش برای تعریف متفیرهای رشته ای استفاده نکنید.
|
1 2 3 4 5 6 7 8 |
<script> var Number_1 = new Number(5); var Number_2 = new Number(3); document.write( Number_1 + Number_2 ); </script> |
پایان آموزش کار با اعداد یا Numbers در جاوااسکریپت





