JavaScript – اعداد (Numbers)

در جاوا اسکریپت فقط یک نوع داده برای نمایش اعداد وجود دارد. اعداد می‌توانند به صورت اعشاری یا صحیح نوشته شوند:

let x = 3.14;    // عدد اعشاری
let y = 3;       // عدد صحیح

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

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

اعداد در جاوا اسکریپت همیشه 64-بیتی هستند

جاوا اسکریپت از استاندارد بین‌المللی IEEE 754 برای ذخیره اعداد به صورت اعداد اعشاری با دقت مضاعف استفاده می‌کند.

این استاندارد اعداد را در 64 بیت ذخیره می‌کند:

  • 52 بیت برای مقدار (Mantissa)
  • 11 بیت برای توان (Exponent)
  • 1 بیت برای علامت (Sign)

دقت اعداد صحیح

اعداد صحیح (بدون نقطه اعشار یا نمایش نمایی) تا 15 رقم دقیق هستند:

let x = 999999999999999;   // مقدار دقیق
let y = 9999999999999999;  // مقدار غیر دقیق (گرد می‌شود به 10000000000000000)

حداکثر تعداد رقم‌های اعشاری 17 رقم است.

مشکلات دقت اعداد اعشاری

محاسبات اعشاری همیشه دقیق نیستند:

let x = 0.2 + 0.1; // نتیجه دقیق نیست

برای حل این مشکل می‌توانید از ضرب و تقسیم استفاده کنید:

let x = (0.2 * 10 + 0.1 * 10) / 10; // نتیجه دقیق است

جمع اعداد و رشته‌ها

عملگر + در جاوا اسکریپت هم برای جمع اعداد و هم برای اتصال رشته‌ها استفاده می‌شود.

جمع اعداد:

let x = 10;
let y = 20;
let z = x + y; // نتیجه: 30

اتصال رشته‌ها:

let x = "10";
let y = "20";
let z = x + y; // نتیجه: "1020"

ترکیب عدد و رشته:

let x = 10;
let y = "20";
let z = x + y; // نتیجه: "1020"

جاوا اسکریپت عملیات را از چپ به راست اجرا می‌کند. بنابراین، ترتیب ترکیب عدد و رشته مهم است.

رشته‌های عددی

جاوا اسکریپت می‌تواند رشته‌هایی با محتوای عددی را در محاسبات به اعداد تبدیل کند:

let x = "100";
let y = "10";

let z1 = x / y; // نتیجه: 10
let z2 = x * y; // نتیجه: 1000
let z3 = x - y; // نتیجه: 90
let z4 = x + y; // نتیجه: "10010" (اتصال رشته)

NaN (Not a Number)

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

let x = 100 / "Apple"; // نتیجه: NaN

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

let x = 100 / "Apple";
isNaN(x); // نتیجه: true

هرگونه عملیات ریاضی با NaN نیز نتیجه NaN خواهد داشت:

let x = NaN;
let y = 5;
let z = x + y; // نتیجه: NaN

Infinity و -Infinity

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

let x = 2 / 0;   // نتیجه: Infinity
let y = -2 / 0;  // نتیجه: -Infinity

اعداد هگزادسیمال و پایه‌های مختلف

اعداد با پیشوند 0x به عنوان هگزادسیمال (پایه 16) شناخته می‌شوند:

let x = 0xFF; // نتیجه: 255

می‌توانید اعداد را با استفاده از متد toString() به پایه‌های مختلف تبدیل کنید:

let myNumber = 32;

myNumber.toString(2);  // باینری (پایه 2)
myNumber.toString(8);  // اکتال (پایه 8)
myNumber.toString(16); // هگزادسیمال (پایه 16)

اشیاء عددی (Number Objects)

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

let x = 123;
let y = new Number(123);

اما استفاده از شیء عددی توصیه نمی‌شود، زیرا کد را پیچیده‌تر کرده و عملکرد را کند می‌کند. همچنین مقایسه شیء‌ها نتایج غیرمنتظره می‌دهد:

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

x == y;  // نتیجه: false
x === y; // نتیجه: false

جمع‌بندی

  • اعداد در جاوا اسکریپت همیشه 64 بیتی هستند.
  • می‌توان از قالب‌های مختلف مانند هگزادسیمال و نشانه‌گذاری علمی استفاده کرد.
  • مشکلات دقت در محاسبات اعشاری و استفاده همزمان از عدد و رشته باید با دقت مدیریت شود.
  • از ساختن اشیاء عددی پرهیز کنید.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - آرایه‌ها (Arrays)

JavaScript – آرایه‌ها (Arrays)

آرایه در جاوااسکریپت متغیری خاص است که می‌تواند بیش از یک مقدار را ذخیره کند. const cars = ["Saab",...

بیشتر بخوانید
JavaScript - ویژگی‌های عدد (Number Properties)

JavaScript – ویژگی‌های عدد (Number Properties)

در جاوااسکریپت، شیء Number شامل ویژگی‌هایی از پیش تعریف‌شده است که برای کار با اعداد مفید هستند. این ویژگی‌ها...

بیشتر بخوانید
JavaScript - متدهای عدد (Number Methods)

JavaScript – متدهای عدد (Number Methods)

در جاوا اسکریپت، متدهایی برای کار با اعداد ارائه شده‌اند که می‌توانند روی تمامی اعداد استفاده شوند. متدهای مربوط...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.