در این بخش از سری آموزش جاوا اسکریپت قصد داریم به شما نحوه کار با اعداد در جاوا اسکریپت را آموزش بدیم.
کار با اعداد در جاوا اسکریپت
جاوا اسکریپت هر دو مقادیر عدد صحیح و اعشاری که می تواند بصورت دسیمال, هگزادسیمال یا هشت هشتی (octal) باشد را پشتیبانی کند.
برخلاف دیگر زبان ها, جاوا اسکریپت با اعداد اعشاری و عدد صحیح بصورت یکسان رفتار می کند.
1 2 3 |
var x = 2; // integer number var y = 3.14; // floating-point number var z = 0xff; // hexadecimal number |
اعداد بسیار بزرگ نیز می تواندد بصورت زیر نیز نمایش داده شوند.
1 2 3 |
var x = 1.57e4; // same as 15700 var y = 4.25e+6; // same as 4.25e6 or 4250000 var z = 4.25e-6; // same as 0.00000425 |
نکته: بزرگترین عدد صحیح امن در جاوا اسکریپت ۹۰۰۷۱۹۹۲۵۴۷۴۰۹۹۱ (۲۵۳-۱)
است درحای که کوچکترین عدد صحیح مناسب نیز -۹۰۰۷۱۹۹۲۵۴۷۴۰۹۹۱ (-(۲۵۳-۱))
است.
اعداد می توانند بصورت هگزا دسیمال (۱۶ تایی) نیز نمایش داده شوند. اعداد هگز با پیشوند ۰x
شروع می شوند که بیشتر در مقادیر رنگ ها از آن استفاده می کنیم.
1 2 3 |
var x = 0xff; // same as 255 var y = 0xb4; // same as 180 var z = 0x00; // same as 0 |
نکته: اعداد صحیح می توانند بصورت دسیمال, هگزادسیمال یا هشت هشتی (octal) و اعداد اعشاری نیز می توانند بصورت رسیمال یا نماد نمایشی تعریف شوند.
عملیات ریاضی روی اعداد و شته ها
همان طور که در بخش های قبلی دیدیم, اپراتور +
برای هر دو حالت جمع و چسباندن استفاده می شود. بنابراین برای انجام عملیات ریاضی روی اعداد و رشته ها, نتیجه احتمالا جالب خواهد بود.
مثال زیر به شما نشان می دهد که اگر عدد و رشته را بصورت ریاضی عملیاتی روی آن انجام دهیم چه اتفاقی می افتد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
var x = 10; var y = 20; var z = "30"; // Adding a number with a number, the result will be sum of numbers console.log(x + y); // 30 // Adding a string with a string, the result will be string concatenation console.log(z + z); // '3030' // Adding a number with a string, the result will be string concatenation console.log(x + z); // '1030' // Adding a string with a number, the result will be string concatenation console.log(z + x); // '3010' // Adding strings and numbers, the result will be string concatenation console.log("The result is: " + x + y); // 'The result is: 1020' // Adding numbers and strings, calculation performed from left to right console.log(x + y + z); // 'The result is: 3030' |
اگر با دقت مثال بالا را بررسی کنید, متوجه می شوید که نتیجه فقط یک عملیات ساده چسباندن رشته نبود چرا که اپراتورها با اولیت یکسان, از چپ به راست ارزیابی شدند.
برای همین, از آنجا که متغییرهای x و y هر دو عددی هستند, اول اضافه شدند سپس نتیجه به متغییر z که رشته است, چسبانده شد, از این رو نتیجه ۳۰ + "۳۰" = "۳۰۳۰"
است.
اما, اگر عملیات دیگری مثل ضرب, تقسیم و منها را انجام می دادید, نتیجه فرق می کرد.
جاوا اسکریپت بصورت خودکار رشته های عددی (رشته های که شامل مقدار عدد هستند) را برای عملیات ریاضی به اعداد تبدیل می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var x = 10; var y = 20; var z = "30"; // Subtracting a number from a number console.log(y - x); // 10 // Subtracting a number from a numeric string console.log(z - x); // 20 // Multiplying a number with a numeric string console.log(x * z); // 300 // Dividing a number with a numeric string console.log(z / x); // 3 |
علاوه بر این, اگر سعی در ضرب یا تقسیم اعداد با رشته های غیر عددی کنید, مقدار NaN
(عدد نیست) برگشت داده می شود.
همچنین, اگر از NaN
در عملیات ریاضی استفاده کنید, نتیجه باز هم NaN
خواهد بود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var x = 10; var y = "foo"; var z = NaN; // Subtracting a number from a non-numeric string console.log(y - x); // NaN // Multiplying a number with a non-numeric string console.log(x * y); // NaN // Dividing a number with a non-numeric string console.log(x / y); // NaN // Adding NaN to a number console.log(x + z); // NaN // Adding NaN to a string console.log(y + z); // fooNaN |
مقدار بی نهایت
بی نهایت (Infinity) یک عدد بسیار بزرگ برای جاوا اسکریپت به منظور هندل کردن آن است.
جاوا اسکریپت یک کلمه کلیدی خاص Infinity
و –infinity
برای نمایش بی نهایت مثبت و منفی دارد.
برای مثال با تقسیم هر عددی بر ۰ نتیجه Infinity
را دریافت می کنیم.
1 2 3 4 5 |
var x = 5 / 0; console.log(x); // Infinity var y = -5 / 0; console.log(y); // -Infinity |
نکته: Infinity
یک مقدار خاص است که که مقدار ریاضی آن با ∞
نمایش داده می شود و بزرگتر از هر عددی است. اپراتور typeof
مقدار عدد را برای مقدار بی نهایت برگشت می دهد.
جلوگیری از مشکلات دقت
بعضی اوقات, عملیات روی اعداد اعشاری ممکن است نتایج غیرمنتظره ای ایجاد کند:
1 2 |
var x = 0.1 + 0.2; console.log(x) // 0.30000000000000004 |
همانطور که می بینید نتیجه به جای ۰٫۳
شده ۰٫۳۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۴
.
این تفاوت, خطای نمایش یا خطای گرد کردن نامیده می شود و به این دلیل اتفاق می افتد که جاوا اسکریپت و بیشتر زبان ها از باینری (پایه ۲) برای نمایش دسیمال (پایه ۱۰) اعداد استفاده می کنند.
برای حل این مشکل می توانیم بصورت زیر عمل کنیم:
1 2 |
var x = (0.1 * 10 + 0.2 * 10) / 10; console.log(x) // 0.3 |
جاوا اسکریپت اعداد اعشاری را به ۱۷ رقم گرد می کند که برای جلوگیری از هطای نمایشی در بیشتر موارد مناسب است.
همچنین, در اعداد صحیح جاوا اسکریپت تا ۱۵ رقم صحیح می شوند.
1 2 3 4 5 |
var x = 999999999999999; console.log(x); // 999999999999999 var y = 9999999999999999; console.log(y); // 10000000000000000 |
امیدوارم در این بخش آموزش جاوا اسکریپت, از قسمت اول اعداد در جاوا اسکریپت نهایت استفاده را برده باشید.
در بخش بعدی با قسمت دوم اعداد در جاوا اسکریپت که شامل تجزیه اعداد صحیح از رشته ها, تبدیل اعداد, فرمت بندی و … آشنا می شوید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق باشید.