جاوا اسکرپٹ میں محفوظ عددی حدود کو کیسے سمجھیں۔

2025 Stack Overflow ٹیکنالوجی سروے کے مطابق، JavaScript دنیا میں سب سے زیادہ استعمال ہونے والی پروگرامنگ زبانوں میں سے ایک ہے۔ ہم اسے فرنٹ اینڈ ایپلی کیشنز، بیک اینڈ سروسز، پیمنٹ سسٹم، اینالیٹکس پلیٹ فارمز، بلاک چین ایپلیکیشنز، اور بہت کچھ بنانے کے لیے استعمال کرتے ہیں۔

تاہم، JavaScript میں کچھ دلچسپ حدود ہیں جنہیں بہت سے ڈویلپر اس وقت تک پوری طرح سے نہیں سمجھتے جب تک کہ وہ پیداواری مسائل کا شکار نہ ہوں۔ وہ حد محفوظ عددی حدود.

اس مضمون میں آپ سیکھیں گے:

  • محفوظ عددی حدود کیا ہیں؟

  • جاوا اسکرپٹ میں یہ حدود کیوں ہیں؟

  • درستگی کی خرابیاں کیسے ہوتی ہیں۔

  • کیا BigInt ہے

  • جدید نظام کس طرح استعمال کرتے ہیں۔ BigInt

  • پروڈکشن ایپلی کیشنز میں بڑے عدد کو محفوظ طریقے سے استعمال کرنے کا طریقہ

انڈیکس

شرائط

اس مضمون کی پیروی کرنے کے لیے آپ کو ضرورت ہو گی:

  • جاوا اسکرپٹ کا بنیادی علم

  • کوڈ ایڈیٹر یا براؤزر کنسول

  • متغیرات اور افعال کا علم

JavaScript کی محفوظ عددی حدود کیا ہیں؟

جاوا اسکرپٹ ہے۔ Number نمبر کی نمائندگی کرنے کے لیے درج کریں۔

مثال کے طور پر:

const age = 25
const price = 99.99
const count = 1000

اندرونی طور پر، JavaScript IEEE 754 ڈبل پریزین فلوٹنگ پوائنٹ فارمیٹ کا استعمال کرتے ہوئے نمبرز کو اسٹور کرتا ہے۔ آپ کو پوری تفصیلات کو یاد کرنے کی ضرورت نہیں ہے، لیکن آپ کو ایک اہم نتیجہ کو سمجھنے کی ضرورت ہے۔ مسئلہ یہ ہے کہ JavaScript صرف ایک خاص نقطہ تک صحیح عدد کی نمائندگی کر سکتا ہے۔

اس کا خلاصہ یہ ہے:

console.log(Number.MAX_SAFE_INTEGER) // 9007199254740991

یہ سب سے بڑا عدد ہے جسے JavaScript محفوظ طریقے سے استعمال کر سکتا ہے: Number زمرہ

سب سے چھوٹا محفوظ عدد یہ ہے:

console.log(Number.MIN_SAFE_INTEGER) // -9007199254740991

انہیں "محفوظ” عدد کیوں کہا جاتا ہے؟

"محفوظ” کا مطلب یہ ہے کہ جاوا اسکرپٹ درستگی کو کھونے کے بغیر صحیح اعداد کی نمائندگی کرسکتا ہے۔ جب آپ محفوظ حدود سے باہر جاتے ہیں، تو JavaScript تخمینی غلطیاں کرنا شروع کر دیتا ہے۔

آئیے ایک مثال دیکھتے ہیں۔

const max = Number.MAX_SAFE_INTEGER

console.log(max + 1) // 9007199254740992
console.log(max + 2) // 9007199254740992

یہ غلط ہے کیونکہ میں نے کہا: 1 اور 2 یہ وہی نتائج پیدا نہیں کرنا چاہئے، لیکن اندازہ لگائیں کہ کیا؟ ایسا اس لیے ہوتا ہے کہ جاوا اسکرپٹ اب قریب میں موجود بڑے عدد کے درمیان درست طریقے سے فرق نہیں کر سکتا۔

اگر میں گیم میں نیا ہوں تو میں اسے کیسے سمجھ سکتا ہوں؟

تصور کریں کہ آپ کے پاس کیمرہ ہے۔ اگر آپ قریب سے زوم کرتے ہیں، تو آپ تمام چھوٹی تفصیلات واضح طور پر دیکھ سکتے ہیں۔ لیکن اگر آپ بہت دور زوم آؤٹ کرتے ہیں تو چھوٹی تفصیلات غائب ہونا شروع ہوجاتی ہیں۔

جاوا اسکرپٹ نمبر اسی طرح برتاؤ کرتے ہیں۔ چھوٹے عدد صحیح طور پر دکھائے جاتے ہیں۔

console.log(10)
console.log(100)
console.log(1000)

تاہم، بہت بڑے انٹیجرز جاوا اسکرپٹ کی کم درستگی کی وجہ سے تفصیل سے محروم ہو جاتے ہیں۔ اس مقام پر، ایک سے زیادہ نمبر ایک ہی قدر پر اندرونی طور پر گرنا شروع ہو جاتے ہیں۔ یہی وجہ ہے کہ بڑے عددی حسابات ناقابل اعتبار ہو جاتے ہیں۔

کیسے چیک کریں کہ آیا آپ کا نمبر محفوظ ہے۔

JavaScript درج ذیل بلٹ ان طریقے فراہم کرتا ہے: Number.isSafeInteger().

ہاں:

console.log(Number.isSafeInteger(100)) // true

ایک اور مثال:

console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)) // true

تاہم، نیچے کا کوڈ غلط لوٹتا ہے۔

console.log(
  Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1)
) // false

یہ طریقہ کارآمد ہے جب کسی API، ڈیٹا بیس، یا صارف کے ان پٹ سے بڑے انٹیجرز کی توثیق کی جائے۔

کیا غیر محفوظ عدد مسائل پیدا کر سکتا ہے؟

غیر محفوظ انٹیجرز سنگین پروڈکشن کیڑے پیدا کر سکتے ہیں۔ مثال کے طور پر، ایک ادائیگی کے پلیٹ فارم کا تصور کریں جو مالی حسابات میں بہت بڑے لین دین کے ریکارڈ پر کارروائی کرتا ہے۔ درستگی کے مسائل توازن یا مفاہمت کی منطق کو توڑ سکتے ہیں۔

const amount = 9007199254740993

console.log(amount) // 9007199254740992

قدر غیر متوقع طور پر بدل جاتی ہے۔ یہ مالیاتی نظام کے لیے خطرناک ہے۔

ایک اور مثال تجزیاتی نظام ہے۔ بڑے پیمانے پر تجزیاتی پلیٹ فارم اکثر اربوں یا کھربوں واقعات کو ٹریک کرتے ہیں۔ غیر محفوظ عدد کاؤنٹرز اور رپورٹس کو خراب کر سکتے ہیں۔

مزید برآں، تقسیم شدہ نظام اکثر بہت بڑی IDs تیار کرتے ہیں۔ مثالوں میں ڈیٹا بیس IDs، ایونٹ IDs، ٹرانزیکشن IDs، اور blockchain ٹرانزیکشن ہیش شامل ہیں۔ درستگی کا نقصان نظام کو غلط ریکارڈوں کا حوالہ دینے کا سبب بن سکتا ہے۔

بلاکچین سسٹم عام طور پر بہت بڑے عدد کا استعمال کرتے ہیں۔ مثال کے طور پر، Ethereum اس طرح کی اقدار کو ذخیرہ کرتا ہے: wei. ایک آسمان ہے:

1,000,000,000,000,000,000 wei

یہ تعداد JavaScript کی محفوظ عددی حد سے زیادہ ہے۔ اگر مناسب طریقے سے نہیں سنبھالا گیا تو، آپ کا پیمانہ غلط ہو جائے گا.

جاوا اسکرپٹ میں BigInt کا تعارف

جاوا اسکرپٹ کا تعارف BigInt اس مسئلے کو حل کرنے کے لیے۔ BigInt JavaScript کو محفوظ حد سے بڑے عدد کو درست طریقے سے ظاہر کرنے کی اجازت دیتا ہے۔ آپ بنا سکتے ہیں BigInt شامل کرکے n نمبروں تک تمام راستے۔

ہاں:

const largeNumber = 9007199254740993n

console.log(largeNumber) // 9007199254740993n

اقدار درست رہتی ہیں۔ آپ بھی بنا سکتے ہیں BigInt اقدار کا استعمال کرتے ہوئے BigInt() کنسٹرکٹر

const value = BigInt("9007199254740993123123123")

console.log(value)

BigInt کے ساتھ چیزیں کیسے کریں۔

آپ ریاضی کے آپریٹرز کو اس طرح استعمال کر سکتے ہیں: BigInt.

مثالوں میں شامل ہیں:

const a = 1000000000000000000n
const b = 2n

console.log(a + b) // 1000000000000000002n
console.log(a - b) // 999999999999999998n
console.log(a * b) // 2000000000000000000n
console.log(a / b) // 500000000000000000n

BigInt اور نمبر کے درمیان فرق

ایک اہم اصول یہ ہے کہ ان کو ملایا نہیں جا سکتا۔ BigInt اور Number براہ راست

ایک خرابی ہوتی ہے۔

const result = 1n + 1 // TypeError

آپ کو اسے واضح طور پر اس طرح تبدیل کرنا ہوگا:

const result = 1n + BigInt(1)

console.log(result)

یا اس طرح:

const result = Number(1n) + 1

console.log(result)

واضح تبدیلی حادثاتی طور پر درستگی کے نقصان کو روکتی ہے۔

کس طرح جدید سافٹ ویئر BigInt استعمال کرتا ہے۔

بہت سے جدید ایپلی کیشنز پر انحصار کرتے ہیں: BigInt. آئیے ایک عملی مثال دیکھتے ہیں۔ Blockchain ایپلی کیشنز درست عددی حسابات پر بہت زیادہ انحصار کرتی ہیں۔

ہاں:

const wei = 1000000000000000000n
const balance = 5000000000000000000n

console.log(balance / wei) // 5n

Ethereum ماحولیاتی نظام میں لائبریریاں اکثر استعمال کرتی ہیں: BigInt ٹوکن بیلنس اور گیس کے حساب کتاب کے لیے اندرونی طور پر۔

BigInt کب استعمال کریں۔

استعمال کریں BigInt جب:

  • عدد کی درستگی اہم ہے۔

  • تعداد محفوظ حد سے زیادہ ہے۔

  • ہم ایک بلاکچین ایپلیکیشن بنا رہے ہیں۔

  • مالیاتی لیجرز کی پروسیسنگ۔

  • ایک بڑے کاؤنٹر پر کارروائی کرنا۔

  • میں IDs کے ایک بڑے ڈیٹا بیس کے ساتھ کام کر رہا ہوں۔

BigInt کب استعمال نہ کریں۔

بچنا BigInt جب:

  • مجھے اعشاریہ حساب کی ضرورت ہے۔

  • ہم ایک سادہ فرنٹ اینڈ انٹرایکشن بنا رہے ہیں۔

  • صحت سے متعلق کوئی فرق نہیں پڑتا

  • کارکردگی بڑی عددی حمایت سے زیادہ اہم ہے۔

BigInt کام معمول سے سست ہے۔ Number اس کی وجہ یہ ہے کہ کارروائیوں کے لیے صوابدیدی درستگی کی ریاضی کی ضرورت ہوتی ہے۔

حتمی خیالات

JavaScript میں محفوظ عددی حدود صرف ایک نظریاتی تصور نہیں ہیں۔ یہ ہر روز حقیقی نظاموں کو متاثر کرتا ہے۔ جیسے جیسے ایپلی کیشنز بڑی اور زیادہ تقسیم ہوتی جاتی ہیں، ڈویلپرز ادائیگی کے نظام، بلاکچین پلیٹ فارمز، اینالیٹکس پائپ لائنز، ڈیٹا بیس، ایونٹ سے چلنے والے فن تعمیرات، اور بہت کچھ میں بڑے عدد کے ساتھ تیزی سے کام کر رہے ہیں۔

محفوظ عددی حدود کو سمجھنا آپ کو ان لطیف پروڈکشن کیڑے سے بچنے میں مدد دے سکتا ہے جن کا پتہ لگانا مشکل ہے۔ BigInt JavaScript ان بڑے عدد کو محفوظ اور درست طریقے سے سنبھالنے کی صلاحیت فراہم کرتا ہے۔ لیکن کسی بھی طاقتور ٹول کی طرح، اسے جان بوجھ کر استعمال کیا جانا چاہیے۔

نوٹ: عام استعمال Number معمول کے حساب کتاب کے لیے قدریں۔ استعمال کریں BigInt جب درستگی اہم ہو جاتی ہے۔

کلیدی سبق آسان ہے۔ JavaScript میں، بڑی تعداد ہمیشہ محفوظ نمبر نہیں ہوتی ہے۔

اوپر تک سکرول کریں۔