اعداد در جاوااسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳قوانین و اصول اولیه زبان جاوااسکریپت
۴خروجی جاوااسکریپت
۵عبارت‌ها در جاوااسکریپت
۶شیوهٔ نوشتن دستورات در جاوااسکریپت
۷نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸متغیرها در جاوااسکریپت
۹عملگرهای جاوااسکریپت
۱۰عملگرهای ریاضی در جاوااسکریپت
۱۱عملگرهای مقداردهی در جاوااسکریپت
۱۲انواع داده‌ها در جاوااسکریپت
۱۳توابع در جاوااسکریپت
۱۴اشیاء (object) در جاوااسکریپت
۱۵رویدادها در جاوااسکریپت
۱۶رشته‌های متنی (string) در جاوااسکریپت
۱۷متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸اعداد در جاوااسکریپت
۱۹متدهای داده‌های عددی در جاوااسکریپت
۲۰آرایه‌ها در جاوااسکریپت
۲۱متدهای آرایه در جاوااسکریپت
۲۲مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳متدهای پیمایش آرایه در جاوااسکریپت
۲۴اشیاء تاریخ و زمان در جاوااسکریپت
۲۵فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸شی ریاضی (Math) در جاوااسکریپت
۲۹ایجاد عدد تصادفی در جاوااسکریپت
۳۰مقادیر بولین (Booleans) در جاوااسکریپت
۳۱عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲ساختار if else و else if در جاوااسکریپت
۳۳تکه کد Switch در جاوا اسکریپت
۳۴حلقه For در جاوااسکریپت
۳۵حلقه While در جاوااسکریپت
۳۶کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷تبدیل نوع داده‌ها در جاوااسکریپت
۳۸عملیات‌های بیتی در جاوااسکریپت
۳۹عبارات با قاعده در جاوااسکریپت
۴۰خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱Scope در جاوااسکریپت
۴۲Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴کلمه کلیدی This در جاوااسکریپت
۴۵کلمه کلیدی Let در جاوااسکریپت
۴۶ثابت‌ها در جاوااسکریپت
۴۷تعریف توابع به صورت پیکان
۴۸کلاس‌ها در جاوااسکریپت
۴۹اشکال‌زدایی در جاوااسکریپت
۵۰راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱بهترین تمرینات جاوااسکریپت
۵۲اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳کارایی در جاوااسکریپت
۵۴کلمات رزرو شده در جاوااسکریپت
۵۵ورژن‌های جاوااسکریپت
۵۶ECMAScript 5 - JavaScript 5
۵۷ECMAScript 6 - ECMAScript 2015
۵۸جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱فرم‌ها در جاوااسکریپت
۲API ارزشیابی در جاوااسکریپت
اشیاء (object) در جاوااسکریپت
۱تست
۲تست
۳تست
۴تست
۵تست
۶تست
۷تست
JS Functions
۱تست
۲تست
۳تست
۴تست
۵تست
۶تست
JS HTML DOM
۱تست
۲تست
۳تست
۴تست
۵تست
۶تست
۷تست
۸تست
۹تست
۱۰تست
۱۱تست
۱۲تست
۱۳تست

جاوااسکریپت فقط یک نوع از اعداد را می‌شناسد. اعداد می‌توانند به صورت اعشاری یا بدون اعشار نوشته شوند. [۱]

مثال

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

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

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

اعداد در جاوااسکریپت تحت استاندارد IEEE754 و با دقت اعداد اعشاری بالا ذخیره می‌شوند.

در این نوع از ذخیره‌سازی اعداد در ۶۴ بیت ذخیره می‌گردند، جایی که اعداد (کسر) در بیت ۰ تا ۵۱ ذخیره می‌شود، توان عدد از بیت ۵۲ ام تا ۶۲ بیت و علامت، در بیت ۶۳ ام ذخیره می‌گردد.

مقدار یا به عبارتی عدد اصلی توان علامت
۵۲ بیت (از ۰ تا ۵۱) ۱۱ بیت (از ۵۲ تا ۶۲) یک بیت (بیت ۶۳)

دقت اعداد در جاوااسکریپت

اعداد صحیح (عددهای بدون اعشار یا کسری) تا ۱۵ رقم قابل محاسبه هستند.

مثال

var x = 999999999999999;   // x will be 999999999999999
var y = 9999999999999999;  // y will be 10000000000000000

بیشترین دقت اعشاری که پشتیبانی می‌شود ۱۷ رقم است، اما دقت این اعداد اعشاری همیشه %۱۰۰ نیست:

مثال

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)

یک اشتباه که ممکن است رخ دهد این است که فکر کنید نتیجه تکه کد زیر برابر با ۳۰ می‌شود:

مثال

var x = 10;
var y = 20;
var z = "The result is: " + x + y;

یک اشتباه که ممکن است رخ دهد این است که فکر کنید نتیجه تکه کد زیر برابر با ۱۰۲۰۳۰ می‌شود:

مثال

var x = 10;
var y = 20;
var z = "30";
var result = x + y + 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 90

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

var x = "100";
var y = "10";
var z = x + y;       // z will not be 110 (It will be 10010)


کلمهٔ کلیدی NaN – عدد نباشد

​NaN​یک کلمهٔ کلیدی است که مشخص می‌کند یک عدد مطابق با قوانین داده‌های عددی در جاوااسکریپت همخوانی ندارد.

زمانی که سعی می‌کنید عملیات‌های ریاضی را با رشته‌های متنی غیر عددی انجام دهید نتیجهٔ عبارت​NaN​(یک عدد نیست) خواهد بود:

مثال

var x = 100 / "Apple";  // x will be NaN (Not a Number)

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

مثال

var x = 100 / "10";     // x will be 10

شما می‌توانید از تابع​isNaN()​که یک تابع global است استفاده کنید تا از عدد بودن یک مقدار یا عدد نبودن آن اطلاع پیدا کنید:

مثال

var x = 100 / "Apple";
isNaN(x);               // returns true because x is Not a Number

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

مثال

var x = NaN;
var y = 5;
var z = x + y;         // z will be NaN

و یا نتیجه یک رشتهٔ متنی به هم چسبیده خواهد بود:

مثال

var x = NaN;
var y = "5";
var z = x + y;         // z will be NaN5

کلمهٔ کلیدی​NaN​از نوع عددی است: اگر نوع این کلمه را با کد​typeof NaN​ بررسی کنیم خروجی نوع عددی خواهد بود:

مثال

typeof NaN;            // returns "number"

بی‌نهایت

مقدار​Infinity​یا بی‌نهایت (یا منفی بی‌نهایت​-Infinity​) مقداری است که جاوااسکریپت زمانی که شما محاسبه‌ای انجام دهید که حاصل آن از بزرگترین عدد ممکن بیشتر باشد.

مثال

var myNumber = 2;
while (myNumber != Infinity) {   // Execute until Infinity
  myNumber = myNumber * myNumber;
}

تقسیم بر صفر نیز موجب بروز​Infinity​می‌شود:

مثال

var x =  2 / 0;       // x will be Infinity
var y = -2 / 0;       // y will be -Infinity

مقدار​Infinity​یک عدد است، اگر برای این مقدار از عملگر​typeof Infinity​استفاده کنید مقدار بازگشتی عملگر​typeof​، نوع عددی (​number​) خواهد بود.

مثال

typeof Infinity;     // returns "number"

عددهای هگزادسیمال (مبنای ۱۶)

مفسر جاوااسکریپت اگر عددی با​0x​شروع شود آن را به عنوان عدد هگزادسیمال (مبنای ۱۶) در نظر می‌گیرد.

مثال

var x = 0xFF;        // x will be 255


به صورت پیشفرض، جاوااسکریپت اعداد را بر مبنای ۱۰ نمایش می‌دهد.

اما شما می‌توانید از متد​toString()​برای چاپ اعداد مبنای ۲ تا مبنای ۳۶ استفاده کنید.

اعداد هگزادسیمال مبنای ۱۶ هستند. اعداد دسیمال مبنای ۱۰ هستند. اعداد اکتال (به انگلیسی: Octal) مبنای ۸ هستند. اعداد باینری نیز مبنای ۲ هستند.

مثال

var myNumber = 32;
myNumber.toString(10);  // returns 32
myNumber.toString(32);  // returns 10
myNumber.toString(16);  // returns 20
myNumber.toString(8);   // returns 40
myNumber.toString(2);   // returns 100000

اعداد می‌توانند اشیاء باشند.

به صورت عادی اعداد در جاوااسکریپت اعدادی از نوع primitve (به فارسی: اصلی) هستند که از عبارت‌های ساده تشکیل می‌شوند:

var x = 123;

اما اعداد را نیز می‌توان با استفاده از کلمهٔ کلیدیبه صورت یک شیء تعریف کرد:

var y = new Number(123);

مثال

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

و یا حتی نتیجه می‌تواند بدتر باشد. اشیاء را نمی‌توان مقایسه کرد:

مثال

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

// (x == y) is false because objects cannot be compared


منابع آموزشی