شماره

یک مقدار عددی از هر سری کاراکترهای عددی تشکیل شده است، به عنوان مثال:

5

نوع داده عددی همچنین شامل چند ویژگی کلی خاص است که مفاهیم عددی را نشان می‌دهند، مانند Infinity و NaN - یک مقدار به معنای "عدد نیست"، یک نتیجه بالقوه تلاش برای انجام محاسبات ریاضی بر روی مقادیر غیر عددی.

شیء عدد

هنگامی که یک مقدار به تابع Number() ارسال می شود، آن مقدار به معادل عدد تبدیل می شود. به عنوان مثال، یک رشته عددی منجر به یک عدد اولیه معادل می شود:

Number( "10" );
> 10

ارسال یک مقدار false یا null به Number() 0 را برمی گرداند و true 1 را برمی گرداند.

Number( null );
> 0

Number( false );
> 0

Number( true );
> 1`

اگر مقداری را نتوان تبدیل کرد، مانند مورد undefined یا رشته‌ای حاوی کاراکترهای غیر عددی، تابع Number NaN را برمی‌گرداند:

Number( undefined );
> NaN

Number( "The number 3." );
> NaN

همانطور که در وراثت نمونه اولیه توضیح داده شده است، احتمالاً دلیلی برای استفاده از شی Number به عنوان سازنده ندارید، زیرا به جای یک عدد واقعی، یک شی Number ایجاد می کند.

let numObject = new Number( 15 );

numObject;
> Number { 15 }

این شی به عنوان مقدار اختصاص داده شده برای عملیات ریاضی عمل می کند، اما در مقایسه برابری دقیق در برابر حروف اعداد با شکست مواجه می شود، زیرا انواع داده ها مطابقت ندارند، بدون اینکه هیچ مزیت عملی نسبت به مقدار تحت اللفظی ارائه دهد.

let tenObject = new Number( 10 );

tenObject + 5;
> 15

tenObject === 10;
> false

شناورها و اعداد صحیح

جاوا اسکریپت فقط یک نوع عدد دارد: اعداد ممیز شناور 64 بیتی IEEE 754-1985 با دقت دوگانه بین -2^1024 و 2^1024 . قبل از اینکه جاوا اسکریپت هر عددی را در حافظه ذخیره کند، ابتدا آن عدد را به یک عدد ممیز شناور باینری تبدیل می کند که به آن شناور نیز می گویند.

این ذخیره سازی 64 بیتی (یک بیت "علامت" مثبت یا منفی، 11 بیت برای یک توان، و 52 بیت برای یک کسری) می تواند خطاهای دقیقی با هر تعداد رقمی که در محدوده مجاز قرار نمی گیرند ایجاد کند. این محدودیت ذاتی نوع داده شماره جاوا اسکریپت است.

0.1 + 0.7
> 0.7999999999999999

یک مقدار عددی را می توان به عنوان یک عدد صحیح ، یک عدد ممیز شناور بدون کسری بین -(2^53 − 1) و 2^53 − 1 ذخیره کرد. از آنجایی که شناورها و اعداد صحیح به یک روش اساسی ذخیره می شوند، هیچ تفاوت عملی در نحوه عملکرد این اعداد وجود ندارد. با این حال، توصیه می کنیم تا حد امکان از اعداد کامل برای جلوگیری از خطاهای دقیق استفاده کنید.

عملگرهای شماره

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

اپراتور نام توضیحات استفاده نتیجه
+ اضافه شدن 2+2 4
- تفریق 4-2 2
* ضرب 2*5 10
/ بخش 10/5 2
++ افزایش یک عدد را به عدد اضافه می کند 2++ 3
-- کاهش یک عدد را کم می کند 3-- 2
** توان نتیجه بالا بردن اولی را برمی گرداند
عملوند به توان عملوند دوم.
2**4 16
% باقی مانده باقیمانده باقیمانده را پس از
عملوند اول بر عملوند دوم تقسیم می شود.
12%5 2

همچنین می توانید از عملگرهای تخصیص ریاضی برای انجام یک عملیات ریاضی بر روی مقدار یک متغیر استفاده کنید و بلافاصله آن مقدار تازه محاسبه شده را به متغیر اختصاص دهید.

اپراتور نام استفاده
+= تکلیف اضافه myValue += 2
-= تخصیص تفریق myValue -= 2
*= تکلیف ضرب myValue *= 2
/= تکلیف بخش myValue /= 2
**= تخصیص توان myValue **= 2
%= تکلیف باقی مانده myValue %= 2

ارزش های نمادین

اعداد ابتدایی برای چند مورد خاص نیز اعمال می‌شود: مقدار «عدد نیست» ( NaN ) و مقداری که بیانگر بی‌نهایت است که می‌تواند مثبت ( Infinity ) یا منفی ( -Infinity ) باشد.

ممکن است به ندرت در نتیجه تقسیم بر صفر Infinity روبرو شوید، موردی که در آن بیشتر زبان های برنامه نویسی به جای آن خطا می دهند:

10 / 0
> Infinity

به یاد داشته باشید که جاوا اسکریپت به حروف بزرگ و کوچک حساس است. Infinity یک نوع داده عددی است که مفهوم بی نهایت را نشان می دهد، اما infinity معنای خاصی ندارد:

Infinity
> Infinity

infinity
> Uncaught ReferenceError: infinity is not defined

NaN (به معنی " عدد نیست ") در مواردی که نتیجه یک عملیات حسابی را نمی توان به عنوان یک عدد بیان کرد، بیشتر نشان داده می شود. به عنوان مثال، از آنجایی که جاوا اسکریپت سعی می کند نوع داده را از مقدار و زمینه استنتاج کند، یک رشته لفظی حاوی فقط یک عدد می تواند در یک عملیات ریاضی استفاده شود:

"2" * 2;
> 4

با این حال، اگر آن رشته را نتوان به عنوان یک مقدار عددی تجزیه کرد، عملیات ریاضی منجر به یک غیر عدد می شود:

"two" * 2;
> NaN

NaN در هر حالتی که یک مقدار نامعتبر به عنوان یک عدد در یک عملیات ریاضی نمایش داده شود، برگردانده می شود. به عنوان مثال می توان به موارد زیر اشاره کرد:

  • تبدیل اعداد ناموفق (مثلاً parseInt( undefined ) )
  • عملیات حسابی که در آن نتیجه یک عدد واقعی نیست (به عنوان مثال، 0 / 0 ، Math.sqrt( -10 ) )
  • یک عملیات حسابی با نتیجه نامشخص ( 0 * Infinity )
  • یک عملیات حسابی که شامل یک NaN صریح ( NaN + 2 ) یا یک نتیجه NaN ( 2 * "string" / 2 ) است.

درک خود را بررسی کنید

نتیجه ارسال false به Number() چیست؟

نادرست
1
NaN
0

نتیجه عمل ریاضی زیر چیست؟

"Six" * 3

2
0
NaN
18
درست است