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

از ویکی کد
پرش به ناوبری پرش به جستجو
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳JavaScript:قوانین و اصول اولیه زبان جاوااسکریپت
۴JavaScript:خروجی جاوااسکریپت
۵JavaScript:عبارت‌ها در جاوااسکریپت
۶JavaScript:شیوهٔ نوشتن (Syntax) عبارات یا دستورات در جاوااسکریپت
۷JavaScript:نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸JavaScript:متغیرها در جاوااسکریپت
۹JavaScript:عملگرهای جاوااسکریپت
۱۰JavaScript:عملگرهای ریاضی در جاوااسکریپت
۱۱JavaScript:عملگرهای مقداردهی در جاوااسکریپت
۱۲JavaScript:انواع داده‌ها در جاوااسکریپت
۱۳JavaScript:توابع در جاوااسکریپت
۱۴JavaScript:اشیاء (object) در جاوااسکریپت
۱۵JavaScript:رویدادها در جاوااسکریپت
۱۶JavaScript:رشته‌های متنی (string) در جاوااسکریپت
۱۷JavaScript:متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸JavaScript:اعداد در جاوااسکریپت
۱۹JavaScript:متدهای داده‌های عددی در جاوااسکریپت
۲۰JavaScript:آرایه‌ها در جاوااسکریپت
۲۱JavaScript:متدهای آرایه در جاوااسکریپت
۲۲JavaScript:مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳JavaScript:متدهای پیمایش آرایه در جاوااسکریپت
۲۴JavaScript:اشیاء تاریخ و زمان در جاوااسکریپت
۲۵JavaScript:فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶JavaScript:متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷JavaScript:متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸JavaScript:شی ریاضی (Math) در جاوااسکریپت
۲۹JavaScript:ایجاد عدد تصادفی در جاوااسکریپت
۳۰JavaScript:مقادیر بولین (Booleans) در جاوااسکریپت
۳۱JavaScript:عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲JavaScript:ساختار if else و else if در جاوااسکریپت
۳۳JavaScript:تکه کد Switch در جاوا اسکریپت
۳۴JavaScript:حلقه For در جاوااسکریپت
۳۵JavaScript:حلقه While در جاوااسکریپت
۳۶JavaScript:کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷JavaScript:تبدیل نوع داده‌ها در جاوااسکریپت
۳۸JavaScript:عملیات‌های بیتی در جاوااسکریپت
۳۹JavaScript:عبارات با قاعده در جاوااسکریپت
۴۰JavaScript:خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱JavaScript:Scope در جاوااسکریپت
۴۲JavaScript:Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳JavaScript:استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴JavaScript:کلمه کلیدی This در جاوااسکریپت
۴۵JavaScript:کلمه کلیدی Let در جاوااسکریپت
۴۶JavaScript:ثابت‌ها در جاوااسکریپت
۴۷JavaScript:تعریف توابع به صورت پیکان
۴۸JavaScript:کلاس‌ها در جاوااسکریپت
۴۹JavaScript:اشکال‌زدایی در جاوااسکریپت
۵۰JavaScript:راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱JavaScript:بهترین تمرینات جاوااسکریپت
۵۲JavaScript:اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳JavaScript:کارایی در جاوااسکریپت
۵۴JavaScript:کلمات رزرو شده در جاوااسکریپت
۵۵JavaScript:ورژن‌های جاوااسکریپت
۵۶JavaScript:ECMAScript 5 - JavaScript 5
۵۷JavaScript:ECMAScript 6 - ECMAScript 2015
۵۸JavaScript:جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱JavaScript:فرم‌ها در جاوااسکریپت
۲JavaScript:API ارزشیابی در جاوااسکریپت
اشیاء (Object)
۱JavaScript:اشیاء در جاوااسکریپت
۲JavaScript:ویژگی‌های اشیاء در جاوااسکریپت
۳JavaScript:متدهای اشیاء در جاوااسکریپت
۴JavaScript:روش‌های دسترسی به شیء در جاوااسکریپت
۵JavaScript:سازنده‌های شیء در جاوااسکریپت
۶JavaScript:شکل اصلی شیء در جاوااسکریپت
۷JavaScript:متدهای شیء در ورژن ES5 جاوااسکریپت
تابع
۱JavaScript:تعریف تابع در جاوااسکریپت
۲JavaScript:پارامتر توابع در جاوااسکریپت
۳JavaScript:فراخوانی تابع در جاوااسکریپت
۴JavaScript:صدا کردن تابع در جاوااسکریپت
۵JavaScript:تابع Apply در جاوااسکریپت
۶JavaScript:بسته‌ها (به انگلیسی: Closures) در جاوااسکریپت
HTML DOM
۱JavaScript:HTML DOM در جاوااسکریپت
۲JavaScript:متدهای HTML DOM در جاوااسکریپت
۳JavaScript:HTML DOM Document در جاوااسکریپت
۴JavaScript:عناصر HTML DOM در جاوااسکریپت
۵JavaScript:HTML DOM در جاوااسکریپت - تغییر محتوای HTML
۶JavaScript:DOM در جاوااسکریپت - تغییر CSS
۷JavaScript:انیمیشن در HTML DOM جاوااسکریپت
۸JavaScript:رویدادها در HTML DOM جاوااسکریپت
۹JavaScript:شنونده رویداد در HTML DOM جاوااسکریپت
۱۰JavaScript:پیمایش در HTML DOM جاوااسکریپت
۱۱JavaScript:عناصر (گره‌ها) HTML DOM در جاوااسکریپت
۱۲JavaScript:مجموعه‌های HTML DOM جاوااسکریپت
۱۳JavaScript:لیست گره‌ها در HTML DOM جاوااسکریپت
Browser BOM
۱JavaScript:پنجره جاوااسکریپت - مدل شیء مرورگر
۲JavaScript:پنجره صفحه نمایش در جاوااسکریپت
۳JavaScript:موقعیت پنجره در جاوااسکریپت
۴JavaScript:تاریخچه پنجره در جاوااسکریپت
۵JavaScript:ناوبری پنجره در جاوااسکریپت
۶JavaScript:جعبه پیغام جاوااسکریپت
۷JavaScript:رویدادهای زمان‌بندی شده در جاوااسکریپت
۸JavaScript:کوکی‌های جاوااسکریپت
AJAX
۱JavaScript:مقدمه‌ای بر AJAX
۲JavaScript:AJAX - شیء XMLHttpRequest
۳JavaScript:AJAX - ارسال یک درخواست به سرور
۴JavaScript:AJAX - پاسخ سرور
۵JavaScript:مثال‌های XML در AJAX
۶JavaScript:مثال‌های PHP در AJAX
۷JavaScript:مثال‌های ASP در AJAX
۸JavaScript:مثال پایگاه داده در AJAX
۹JavaScript:نرم‌افزارهای XML
۱۰JavaScript:مثال‌های AJAX
JSON
۱JavaScript:مقدمه‌ای بر JSON
۲JavaScript:شیوهٔ نوشتار JSON
۳JavaScript:JSON در برابر XML
۴JavaScript:انواع داده‌های مجاز در JSON
۵متد JSON.parse()
۶متد JSON.stringify()
۷JavaScript:اشیاء JSON
۸JavaScript:آرایه‌ها در JSON
۹JavaScript:PHP در JSON
۱۰JavaScript:HTML در JSON
۱۱JavaScript:JSONP
jQuery
۱JavaScript:جاوااسکریپت / انتخابگرهای DOM جی‌کوئری
۲JavaScript:جاوااسکریپت / عناصر HTML جی‌کوئری
۳JavaScript:جاوااسکریپت / استایل‌های CSS در جی‌کوئری
۴JavaScript:جاوااسکریپت / 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


منابع آموزشی