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

تعداد بازدید ها : 15 بازدید
 اعداد در جاوا اسکریپت

در جاوا اسکریپت، اعداد به صورت Number ذخیره می‌شوند که از فرمت double-precision 64-bit binary format IEEE 754 استفاده می‌کند. این فرمت می‌تواند اعداد صحیح تا ۱۵ رقم را بدون خطا نمایش دهد. اما زمانی که تعداد ارقام بیشتر از این مقدار باشد (مانند عدد ۱۷ رقمی)، دقت کاهش می‌یابد و ممکن است اعداد گرد شوند. این می‌تواند باعث شود که وقتی عدد ۱۷ رقمی شما با یک عدد ثابت جمع می‌شود، نتیجه نهایی دقیقاً مطابق انتظار نباشد و مقداری تغییر کند.

برای حفظ دقت در کار با اعداد بزرگ ، می‌توانید از کتابخانه‌هایی مانند BigInt ( برای اعداد بزرگ صحیح ) و یا big.js ( برای اعداد بزرگ اعشاری ) استفاده کنید که برای مدیریت اعداد بزرگ و با دقت بالا طراحی شده‌اند .

آشنایی با کتابخانه BigInt

کتابخانه BigInt در جاوا اسکریپت برای کار با اعداد بسیار بزرگ (فراتر از محدوده اعداد معمولی Number) استفاده می‌شود. این ویژگی به شما امکان می‌دهد تا اعداد صحیح با دقت بالاتر از Number ذخیره و مدیریت کنید.

ساختن BigInt

برای ایجاد یک BigInt، می‌توانید از تابع BigInt() یا پسوند n بعد از یک عدد صحیح استفاده کنید.

// استفاده از تابع BigInt
let bigNumber1 = BigInt(123456789012345678901234567890);

// استفاده از پسوند n
let bigNumber2 = 123456789012345678901234567890n;

عملیات با BigInt

BigInt پشتیبانی از عملیات ریاضی معمولی را فراهم می‌کند:

let bigNumber1 = 123456789012345678901234567890n;
let bigNumber2 = 987654321098765432109876543210n;

let sum = bigNumber1 + bigNumber2; // جمع
let difference = bigNumber2 - bigNumber1; // تفریق
let product = bigNumber1 * bigNumber2; // ضرب
let quotient = bigNumber2 / bigNumber1; // تقسیم (به صورت صحیح)
let remainder = bigNumber2 % bigNumber1; // باقیمانده

مقایسه BigInt با Number

به دلیل دقت بالای BigInt، نمی‌توان آن را مستقیماً با Number مقایسه یا ترکیب کرد. در صورت نیاز به مقایسه یا ترکیب، باید نوع‌ها را تطبیق داد.

let bigNumber = 12345678901234567890n;
let number = 10;

// مقایسه پس از تبدیل
console.log(bigNumber > BigInt(number)); // true

// ترکیب پس از تبدیل
let combined = bigNumber + BigInt(number); // 12345678901234567900n

تبدیل BigInt به Number

برای تبدیل BigInt به Number، می‌توانید از تابع Number() استفاده کنید. با این حال، اگر عدد بسیار بزرگ باشد، ممکن است دقت از دست برود.

let bigNumber = 12345678901234567890n;
let number = Number(bigNumber);
console.log(number); // 1.2345678901234567e+19

کتابخانه big.js

کتابخانه big.js نیز برای کار با اعداد بسیار بزرگ و با دقت بالا در جاوا اسکریپت استفاده می‌شود، اما با تمرکز بیشتر بر محاسبات دقیق با اعداد اعشاری. در حالی که BigInt برای اعداد صحیح بزرگ مناسب است، big.js برای محاسبات دقیق با اعداد اعشاری کاربردی‌تر است.

می خوانم   تولید فایل اکسل از محتوای جیسون با کتابخانه xlsx

نصب و استفاده از big.js

ابتدا باید کتابخانه big.js را نصب کنید. می‌توانید این کار را با استفاده از npm انجام دهید :

npm install big.js

سپس، می‌توانید کتابخانه را در کد جاوا اسکریپت خود وارد کنید و از آن برای انجام محاسبات دقیق استفاده کنید :

const Big = require('big.js');

// ساخت یک عدد بزرگ اعشاری
let bigDecimal1 = new Big('12345678901234567890.12345678901234567890');
let bigDecimal2 = new Big('98765432109876543210.98765432109876543210');

// انجام محاسبات دقیق
let sum = bigDecimal1.plus(bigDecimal2); // جمع
let difference = bigDecimal2.minus(bigDecimal1); // تفریق
let product = bigDecimal1.times(bigDecimal2); // ضرب
let quotient = bigDecimal2.div(bigDecimal1); // تقسیم

مزایای big.js

  • دقت بالا: big.js دقت بسیار بالایی در محاسبات اعشاری فراهم می‌کند و از خطاهای گرد کردن جلوگیری می‌کند.
  • عملیات ریاضی کامل: این کتابخانه همه عملیات‌های ریاضی معمولی را پشتیبانی می‌کند.
  • سبک و سریع: big.js نسبتاً سبک است و کارایی بالایی دارد.

منبع : Microsoft Copilot

متن سوال :

  • لطفا در رابطه با اعداد بزرگ در جاوا اسکریپت توضیح بده
  • در رابطه با کتابخانه BigInt توضیح بده
  • در رابطه با کتابخانه big.js توضیح بده
محمدمجتبی جوارشکیان

محمدمجتبی جوارشکیان

من محمدمجتبی جوارشکیان ، کارشناس IT و فعال اجتماعی هستم و در حوزه معماری ، طراحی ، تحلیل گری ، مدلسازی و توسعه ی محیط های نرم افزاری فعالیت دارم. همانند سایر کارشناسان IT در تلاشم تا دنیا جای زیباتری برای زندگی باشد. بسیار خوشحال می شوم من را از انتقادات ، پیشنهادات و نظرات خود مطلع فرمایید. آدرس ایمیل : mjfakhr@yahoo.com

ارسال یک پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

3 + 6 =