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

JavaScript 只有一种数值类型。

书写数值时带不带小数点均可。

جسٹسکریپٹ نمائشات

JavaScript کا نمبر لکھنا سارنوئی نقطہ سے بغیر بھی جاسکتا ہے اور سارنوئی نقطہ سے بھی جاسکتا ہے:

مثال

var x = 3.14;    // نقطہ والا نمبر
var y = 3;       // بغیر نقطہ کا نمبر

علمی طور پر کوشش کریں

بسیار بڑے یا بہت چھوٹے اعداد کو سائنس کی تقسیم کے ذریعے لکھا جاسکتا ہے:

مثال

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123

علمی طور پر کوشش کریں

JavaScript کا نمبر ہمیشہ 64 بیٹ کا فلوٹنگ پوائنٹ ہوتا ہے

بسیار سے متعدد دیگر پروگرامنگ زبانوں سے متفاوت، JavaScript نمبروں کی مختلف اقسام کا تعریف نہیں کرتا، مثلاً پورا عدد، چھوٹا، بڑا، فلوٹنگ پوائنٹ وغیرہ.

JavaScript کا نمبر ہمیشہ دو دقت کا فلوٹنگ پوائنٹ استعمال کرتا ہے، یہ بین الاقوامی IEEE 754 معیار پر مبنی ہے.

اس فارمات میں 64 بیٹ استعمال کیے جاتے ہیں، جس میں 0 سے 51 بیٹ کو نمبر (جز) استعمال کیا جاتا ہے، 52 سے 62 بیٹ کو exponent استعمال کیا جاتا ہے اور 63 بیٹ کو سیگن استعمال کیا جاتا ہے:

قیمتی (یا fraction/mantissa) انگریزی میں exponent سیگن
52 بیٹ (0 - 51) 11 بیٹ (52 - 62) 1 بیٹ (63)

دقت

پورا عدد (انگریزی میں exponent یا scientific notation کا استعمال نہ کرتے ہوئے) 15 دفعات تک دقت سے محفوظ رہتا ہے.

مثال

var x = 999999999999999;   // x جواز دیکھیں گا 999999999999999
var y = 9999999999999999;  // y جواز دیکھیں گا 10000000000000000

علمی طور پر کوشش کریں

اعداد کا سب سے بڑا عدد 17 دفعات کا ہوتا ہے، لیکن فلوٹنگ پوائنٹ کا جبران ہمیشہ 100% دقت سے نہیں ہوتا:

مثال

var x = 0.2 + 0.1;         // x جواز دیکھیں گا 0.30000000000000004

علمی طور پر کوشش کریں

جمع اور تقسیم استعمال کرکے سوال کا حل کرسکتا ہے:

مثال

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x جواز دیکھیں گا 0.3

علمی طور پر کوشش کریں

اعداد اور سٹرنگ کو جمع دینا

اخطار !!

JavaScript کا جمع اور جوڑنا (+) آپریٹر استعمال کرتا ہے.

اعداد کو جمع دینا، سٹرنگ کو جوڑنا.

اگر آپ دو عدد کو جمع دینا چاہیئے تو نتیجہ ایک عدد ہوگا:

مثال

var x = 10;
var y = 20;
var z = x + y;           // z جواز دیکھیں گا 30 (ایک عدد)

علمی طور پر کوشش کریں

اگر دو سٹرنگ کو جمع دینا چاہیئے تو نتیجہ ایک سٹرنگ کو جوڑنا ہوگا:

مثال

var x = "10";
var y = "20";
var z = x + y;           // z 1020 (رشته) خواهد بود

علمی طور پر کوشش کریں

اگر آپ ایک عدد اور ایک سٹرنگ کو جمع دینا چاہیئے تو نتیجہ بھی سٹرنگ کو جوڑنا ہوگا:

مثال

var x = 10;
var y = "20";
var z = x + y;           // z جواز دیکھیں گا 1020 (ایک سٹرنگ)

علمی طور پر کوشش کریں

اگر شما یک رشته و یک عدد را به هم اضافه کنید، نتیجه پیوند رشته‌ها نیز خواهد بود:

مثال

var x = "10";
var y = 20;
var z = x + y;           // z 1020 (رشته) خواهد بود

علمی طور پر کوشش کریں

اشتباه رایج این است که فکر می‌کنند نتیجه باید 30 باشد:

مثال

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

علمی طور پر کوشش کریں

اشتباه رایج این است که فکر می‌کنند نتیجه باید 102030 باشد:

مثال

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;

علمی طور پر کوشش کریں

JavaScript از چپ به راست به ترتیب اجرا می‌شود.

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

چون z یک رشته است، 30 + "30" پیوند شده است.

رشته عددی

رشته‌های JavaScript می‌توانند حاوی محتوای عددی باشند:

var x = 100;         // x یک عدد است
var y = "100";       // y یک رشته است

در همه عملیات عددی، JavaScript سعی می‌کند رشته‌ها را به اعداد تبدیل کند:

این مثال به این شکل اجرا می‌شود:

var x = "100";
var y = "10";
var z = x / y;       // z 10 خواهد بود

علمی طور پر کوشش کریں

این مثال نیز به این شکل اجرا می‌شود:

var x = "100";
var y = "10";
var z = x * y;       // z 1000 خواهد بود

علمی طور پر کوشش کریں

این مثال به این شکل اجرا می‌شود:

var x = "100";
var y = "10";
var z = x - y;      // z 90 خواهد بود

علمی طور پر کوشش کریں

اما این مثال مانند مثال بالا اجرا نمی‌شود:

var x = "100";
var y = "10";
var z = x + y;       // z 110 نخواهد بود (بلکه 10010 خواهد بود)

علمی طور پر کوشش کریں

در آخرین مثال، JavaScript از عملگر + برای پیوند رشته‌ها استفاده کرده است.

NaN - غیر عدد

NaN یک کلمه ذخیره شده JavaScript است که نشان می‌دهد یک عدد شماره نیست.

تلاش برای انجام تقسیم با یک رشته غیر عددی به NaN (Not a Number) منجر می‌شود:

مثال

var x = 100 / "Apple";  // x NaN (Not a Number) خواهد بود

علمی طور پر کوشش کریں

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

مثال

var x = 100 / "10";     // x 10 خواهد بود

علمی طور پر کوشش کریں

شما می‌توانید از تابع جهانی JavaScript استفاده کنید isNaN() برای تعیین اینکه یک مقدار شماره است یا خیر:

مثال

var x = 100 / "Apple";
isNaN(x);               // باتریجی بپرسد که x شماره نیست

علمی طور پر کوشش کریں

مواظب باشید NaNخواهد بود. اگر در محاسبات ریاضی از NaN، پس نتیجه نیز NaN:

مثال

var x = NaN;
var y = 5;
var z = x + y;         // z NaN خواهد بود

علمی طور پر کوشش کریں

نتیجه ممکن است به صورت

مثال

var x = NaN;
var y = "5";
var z = x + y;         // z NaN5 خواهد بود

علمی طور پر کوشش کریں

NaN اعداد است،typeof NaN برگشت می‌دهد number:

مثال

typeof NaN;             // برگرداند "number"

علمی طور پر کوشش کریں

Infinity

Infinity (یا -Infinity) مقدار برگشتی است که JavaScript در محاسبات عددی زمانی که از محدوده ممکن فراتر می‌رود برگشت می‌دهد.

مثال

var myNumber = 2;
while (myNumber != Infinity) {          // تا زمان Infinity اجرا می‌شود
    myNumber = myNumber * myNumber;
}

علمی طور پر کوشش کریں

تقسیم بر صفر (صفر) نیز منجر به Infinity:

مثال

var x =  2 / 0;          // x Infinity خواهد بود
var y = -2 / 0;          // y -Infinity خواهد بود

علمی طور پر کوشش کریں

Infinity اعداد است:typeOf Infinity برگشت می‌دهد number.

مثال

typeof Infinity;        // برگرداند "number"

علمی طور پر کوشش کریں

هگزادسانی

JavaScript اعداد با پیشوند 0x اعداد متغیرهای عددی به عنوان هگزادسانی تفسیر می‌شوند.

مثال

var x = 0xFF;             // x 255 خواهد بود.

علمی طور پر کوشش کریں

هرگز اعداد را با پیشوند صفر بنویسید (مثل 07).

برخی از نسخه‌های JavaScript اعداد با پیشوند صفر را به عنوان هگزادسانی تفسیر می‌کنند.

به طور پیش‌فرض، JavaScript اعداد را به عنوان اعشار دودسانی نمایش می‌دهد.

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

مثال

var myNumber = 128;
myNumber.toString(16);     // برگرداند 80
myNumber.toString(8);      // برگرداند 200
myNumber.toString(2);      // برگرداند 10000000

علمی طور پر کوشش کریں

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

مجموعه جوهری JavaScript اعداد معمولاً از طریق مقدارهای صریح ایجاد می‌شوند: var x = 123

但是也可以通过关键词 new 定义为对象:var y = new Number(123)

مثال

var x = 123;
var y = new Number(123);
// typeof x 返回 number
// typeof y 返回 object

علمی طور پر کوشش کریں

请不要创建数值对象。这样会拖慢执行速度。

new 关键词使代码复杂化,并产生某些无法预料的结果:

جب == کم کاری واری کے ساتھ، کیونکہ

مثال

وار x = 500;             
وار y = نیو نمبر(500);
// (x == y) کی واری ترو کی ہے، کیونکہ x اور y کی واری ایک سے ایک سے مساوی ہیں

علمی طور پر کوشش کریں

جب === کم کاری واری کے بعد، کیونکہ === آپریٹر کو قسم اور واری دونوں کی ضرورت ہوتی ہے۔

مثال

وار x = 500;             
وار y = نیو نمبر(500);
// (x === y) کی واری فالس ہے، کیونکہ x اور y کی قسم مختلف ہیں

علمی طور پر کوشش کریں

حتی بدتر بھی۔ اوبجیکٹ قابل مقایسه نہیں ہیں:

مثال

وار x = نیو نمبر(500);             
وار y = نیو نمبر(500);
// (x == y) کی واری فالس ہے، کیونکہ اوبجیکٹ قابل مقایسه نہیں ہیں

علمی طور پر کوشش کریں

جسٹا اسکریپٹ اوبجیکٹ نہیں ہموار کرسکتا۔