BigInt ÛÚ© ÙÙØ¹ Ø¯Ø§Ø¯Ù Ø¹Ø¯Ø¯Û Ø®Ø§Øµ است Ú©Ù Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ø¨Ø±Ø§Û ØªØ¹Ø±Û٠اعداد صØÛØ Ø¨Ø§ Ø·ÙÙ Ø¯ÙØ®Ùا٠را ÙØ±Ø§ÙÙ
Ù
Û Ú©ÙØ¯.
ÛÚ© bigint را Ù
Û ØªÙØ§Ù با اضاÙÙ Ú©Ø±Ø¯Ù ØØ±Ù n Ø¨Ù Ø§ÙØªÙØ§Û ÛÚ© عدد صØÛØ Ù ÛØ§ با ÙØ±Ø§Ø®ÙاÙÛ ØªØ§Ø¨Ø¹ BigInt Ú©Ù bigint ÙØ§ را از Ø§Ø¹Ø¯Ø§Ø¯Ø Ø±Ø´ØªÙ ÙØ§ Ù ØºÛØ±Ù Ø¨ÙØ¬Ùد Ù
Û Ø¢ÙØ±Ø¯Ø ساخت.
const bigint = 1234567890123456789012345678901234567890n;
const sameBigint = BigInt("1234567890123456789012345678901234567890");
const bigintFromNumber = BigInt(10); // با 10n Ûکسا٠است
ع٠ÙÚ¯Ø±ÙØ§Û Ø±ÛØ§Ø¶Û
ÛÚ© BigInt را Ù
Û ØªÙØ§Ù عÙ
دتا Ø¨Ù ØµÙØ±Øª ÛÚ© عدد Ø¹Ø§Ø¯Û Ø§Ø³ØªÙØ§Ø¯Ù Ú©Ø±Ø¯Ø Ø¨Ø±Ø§Û Ù
ثاÙ:
alert(1n + 2n); // 3
alert(5n / 2n); // 2
در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯: عÙ
ÙÛØ§Øª ØªÙØ³ÛÙ
5/2 ÙØªÛج٠را بدÙÙ ÙØ³Ù
ت اعشار Ù Ø±ÙØ¯ شد٠ب٠سÙ
ت ØµÙØ±Ø باز Ù
Û Ú¯Ø±Ø¯Ø§ÙØ¯. ÙÙ
Ù Û Ø¹Ù
ÙÛØ§Øª بر رÙÛ bigint ÙØ§Ø Ù
ÙØ¯Ø§Ø±Û را از ÙÙØ¹ bigint باز Ù
Û Ú¯Ø±Ø¯Ø§ÙÙØ¯.
اعداد ÙÙØ¹ bigint را ÙÙ Û ØªÙØ§Ù با اعداد ٠ع٠ÙÙÛ Ù Ø®ÙÙØ· کرد:
alert(1n + 2); // Error: Cannot mix BigInt and other types
در ØµÙØ±Øª ÙÛØ§Ø² Ù
Û Ø¨Ø§ÛØ³Øª Ø¢Ù ÙØ§ را Ø¨Ù ØµÙØ±Øª Ø²ÛØ±Ø ØªÙØ³Ø· BigInt() ÛØ§ Number() تبدÛ٠کرد:
let bigint = 1n;
let number = 2;
// تبدÛÙ ÙÙØ¹ number ب٠bigint
alert(bigint + BigInt(number)); // 3
// تبدÛÙ ÙÙØ¹ bigint ب٠number
alert(Number(bigint) + number); // 3
ع٠ÙÛØ§Øª تبدÛÙ Ø¨Ù ØµÙØ±Øª ساکت Ø¹Ù Ù Ù Û Ú©ÙÙØ¯Ø ٠خطاÛÛ Ø¨Ø§Ø² ÙÙ Û Ú¯Ø±Ø¯Ø§ÙÙØ¯Ø ا٠ا اگر Ù ÙØ¯Ø§Ø± bigint Ø¨Ø³ÛØ§Ø± بزرگ باشد ٠در ÙÙØ¹ عدد (number) ÙÚ¯ÙØ¬Ø¯Ø Ø§Ø±ÙØ§Ù اضاÙÛ Ø¢Ù Ø§Ø² بÛÙ Ø®ÙØ§Ùد Ø±ÙØªØ پس در اÛÙ ÙÙØ¹ تبدÛÙ ÙÙ ÛØ´Ù Ù Ø±Ø§ÙØ¨ Ø¨Ø§Ø´ÛØ¯.
عÙ
Ùگر جÙ
ع ÛکاÙÛ +value راÙÛ Ø´ÙØ§Ø®ØªÙ Ø´Ø¯Ù Ø¨Ø±Ø§Û ØªØ¨Ø¯ÛÙ ÛÚ© value ب٠ÙÙØ¹ Ø¯Ø§Ø¯Ù Ø¹Ø¯Ø¯Û (number) است.
Ø¨Ø±Ø§Û Ø¬ÙÙÚ¯ÛØ±Û از درÙÙ Ø´Ø¯ÙØ اÛ٠ع٠Ùگر رÙÛ bigint ÙØ§ Ù¾Ø´ØªÛØ¨Ø§ÙÛ ÙÙ Û Ø´ÙØ¯.
let bigint = 1n;
alert( +bigint ); // خطا
پس Ø¨Ø§ÛØ¯ از Number() Ø¨Ø±Ø§Û ØªØ¨Ø¯ÛÙ ÛÚ© bigint ب٠ÙÙØ¹ Ø¹Ø¯Ø¯Û Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
ع٠ÙÚ¯Ø±ÙØ§Û Ù ÙØ§Ûس٠اÛ
عÙ
ÙÚ¯Ø±ÙØ§Û Ù
ÙØ§ÛØ³Ù ÙØ¸Ûر < Ù > بدÙÙ Ù
شک٠بر رÙÛ bigint ÙØ§ ٠اعداد (number) کار Ù
Û Ú©ÙÙØ¯:
alert( 2n > 1n ); // true
alert( 2n > 1 ); // true
Ø§ÙØ¨ØªÙ در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ ک٠با ØªÙØ¬Ù ب٠Ù
ØªÙØ§Ùت Ø¨ÙØ¯Ù ÙÙØ¹ Ø¯Ø§Ø¯Ù Ø§Û bigint Ù numberØ Ø¨Ø§ عÙ
Ùگر == Ù
Û ØªÙØ§Ù Ø¢Ù ÙØ§ را Ù
ÙØ§ÛØ³Ù Ú©Ø±Ø¯Ø Ø§Ù
ا با عÙ
Ùگر === Ø®ÛØ±.
alert( 1 == 1n ); // true
alert( 1 === 1n ); // false
ع٠ÙÛØ§Øª Ù ÙØ·ÙÛ
Ø¯Ø§Ø®Ù Ø³Ø§Ø®ØªØ§Ø±ÙØ§Û Ø´Ø±Ø·Û if ÛØ§ Ø³Ø§ÛØ± عÙ
ÙÛØ§Øª Ù
ÙØ·ÙÛØ bigint ÙØ§ ÙÙ
ÚÙ٠اعداد Ù
عÙ
ÙÙÛ Ø±ÙØªØ§Ø± Ù
Û Ú©ÙÙØ¯.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ Ù
ÙØ¯Ø§Ø± bigint برابر با 0nØ Ø¯Ø± Ø³Ø§Ø®ØªØ§Ø±ÙØ§Û Ø´Ø±Ø·ÛØ ÙØ§ØµØÛØ (false) است Ù Ø³Ø§ÛØ± Ù
ÙØ§Ø¯ÛØ±Ø ØµØÛØ (true) ÙØ³ØªÙد.
if (0n) {
// ÙÛÚ ÙÙØª اجرا ÙÙ
Û Ø´ÙØ¯.
}
عÙ
ÙÚ¯Ø±ÙØ§Û Ù
ÙØ·ÙÛ ÙØ¸Ûر || Ù && رÙÛ bigint ÙØ§Ø Ù
شاب٠ÙÙØ¹ Ø¹Ø¯Ø¯Û (number) عÙ
Ù Ù
Û Ú©ÙÙØ¯:
alert( 1n || 2 ); // 1 (1nØ true در ÙØ¸Ø± Ú¯Ø±ÙØªÙ Ù
Û Ø´ÙØ¯)
alert( 0n || 2 ); // 2 (0nØ false در ÙØ¸Ø± Ú¯Ø±ÙØªÙ Ù
Û Ø´ÙØ¯)
پاÙÛÙÛÙ ÙØ§
پاÙÛÙÛ٠کرد٠bigint ÙØ§ Ù
ÙØ¯Ø§Ø±Û Ù
ØªÙØ§Ùت Ø§Ø³ØªØ Ø¨Ù Ø§ÛÙ Ø¹ÙØª Ú©Ù Ø¨Ø³ÛØ§Ø±Û از عÙ
ÙÚ¯Ø±ÙØ§Û Ø¬Ø§ÙØ§ اسکرÛÙ¾ØªØ Ù
ث٠+Ø - Ù Ø¨Ø³ÛØ§Ø±Û دÛÚ¯Ø±Ø ÙØ§Ú©ÙØ´ ÙØ§Û Ù
ختÙÙÛ Ø±Ø§ را با bigint ÙØ§ ÙØ³Ø¨Øª ب٠اعداد Ù
عÙ
ÙÙÛ Ø¯Ø§Ø±ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§ÙØ ØªÙØ³ÛÙ bigint ÙØ§Ø ÙÙ ÛØ´Ù ÛÚ© Ù ÙØ¯Ø§Ø± bigint باز Ù Û Ú¯Ø±Ø¯Ø§ÙØ¯Ø ک٠در ØµÙØ±Øª ÙØ²ÙÙ Ø Ú¯Ø±Ø¯ Ù Û Ø´ÙØ¯.
Ø¨Ø±Ø§Û ØªÙÙÛØ¯ ÚÙÛÙ Ø±ÙØªØ§Ø±ÛØ ÛÚ© پاÙÛÙÛÙ Ø¨Ø§ÛØ¯ کد را Ø¨Ø±Ø±Ø³Û Ú©Ø±Ø¯ÙØ Ù ØªÙ Ø§Ù Û Ø¹Ù ÙÚ¯Ø±ÙØ§Û اÛÙ ÚÙÛ٠را با ØªÙØ§Ø¨Ø¹Ø´ جاÛگزÛÙ Ú©ÙØ¯. ا٠ا Ø§ÙØ¬Ø§Ù ÚÙÛÙ Ú©Ø§Ø±Û Ø³ÙÚ¯Û٠است Ù Ø¨Ù Ù ÙØ¯Ø§Ø± Ø²ÛØ§Ø¯Û کاراÛÛ Ø±Ø§ Ú©Ø§ÙØ´ Ù Û Ø¯ÙØ¯.
ب٠ÙÙ ÛÙ Ø®Ø§Ø·Ø±Ø Ù¾Ø§ÙÛÙÛÙ Ø´ÙØ§Ø®ØªÙ Ø´Ø¯Ù Ø®ÙØ¨Û Ø¨Ø±Ø§Û Ø§Û٠کار ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯.
با اÛÙ ØØ§ÙØ Ø±ÙØ´ دÛÚ¯Ø±Û ØªÙØ³Ø· ØªÙØ³Ø¹Ù دÙÙØ¯Ú¯Ø§Ù کتابخاÙÙ JSBI Ù¾ÛØ´ÙÙØ§Ø¯ شد٠است.
اÛ٠کتابخاÙÙØ اعداد بزرگ را Ø¨Ù Ø±ÙØ´ ÙØ§Û Ø®ÙØ¯ Ù¾ÛØ§Ø¯Ù Ø³Ø§Ø²Û Ù Û Ú©ÙØ¯. Ù Û ØªÙØ§ÙÛ٠از Ø¢ÙÙØ§ Ø¨Ù Ø¬Ø§Û bigint ÙØ§Û بÙÙ Û Ø¬Ø§ÙØ§ اسکرÛپت Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ :
| ع٠ÙÛØ§Øª | بÙÙ
Û BigInt |
JSBI |
|---|---|---|
| ساخت٠از رÙÛ Ø¹Ø¯Ø¯ | a = BigInt(789) |
a = JSBI.BigInt(789) |
| Ø§ÙØ²Ùد٠| c = a + b |
c = JSBI.add(a, b) |
| ØªÙØ±ÛÙ | c = a - b |
c = JSBI.subtract(a, b) |
| ⦠| ⦠| ⦠|
٠سپس Ù Û ØªÙØ§Ù از پاÙÛÙÛÙ (Ù¾ÙØ§Ú¯ÛÙ Babel) Ø¨Ø±Ø§Û ØªØ¨Ø¯ÛÙ ÙØ±Ø§Ø®ÙاÙÛ ÙØ§Û JSBI ب٠bigint ÙØ§Û بÙÙ Û Ø§Ø³ØªÙØ§Ø¯Ù کرد تا Ù Ø±ÙØ±Ú¯Ø±Ùا از Ø¢Ù Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ú©ÙÙØ¯.
Ø¨Ù Ø¨ÛØ§ÙÛ Ø¯ÛÚ¯Ø±Ø Ø§Û٠رÙÛکرد Ù¾ÛØ´ÙÙØ§Ø¯ Ù Û Ú©ÙØ¯ Ú©Ù Ø¨Ù Ø¬Ø§Û Ø§Ø³ØªÙØ§Ø¯Ù از bigint ÙØ§Û بÙÙ Û Ø¬Ø§ÙØ§ اسکرÛÙ¾ØªØ Ú©Ø¯ÙØ§Û Ù Ø±Ø¨ÙØ·Ù را در JSBI بÙÙÛØ³ÛÙ . ا٠ا JSBI با Ø§Ø¹Ø¯Ø§Ø¯Ø Ù٠اÙÙØ¯ bigint ÙØ§ Ø¨Ù ØµÙØ±Øª داخÙÛ Ú©Ø§Ø± Ù Û Ú©ÙØ¯Ø ٠٠طاب٠٠شخصات تعÛÛÙ Ø´Ø¯ÙØ Ø¢Ù ÙØ§ را ب٠گÙÙÙ Ø§Û ØªÙÙÛØ¯ Ù Û Ú©ÙØ¯ Ú©Ù Ú©Ø¯Ø Ø¢Ù Ø§Ø¯Ù Ø§Ø³ØªÙØ§Ø¯Ù bigint (bigint-ready) باشد.
٠ا Ù Û ØªÙØ§ÙÛ٠کد JSBI را Ù٠ا٠گÙÙÙ Ú©Ù ÙØ³ØªØ ÚÙ Ø¨Ø±Ø§Û Ù ÙØªÙر(engine) ÙØ§ÛÛ Ú©Ù bigint ÙØ§ را Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ù Û Ú©ÙÙØ¯Ø Ù ÚÙ Ø¨Ø±Ø§Û Ø¢Ù ÙØ§ÛÛ Ú©Ù Ù¾Ø´ØªÛØ¨Ø§ÙÛ ÙÙ Û Ú©ÙÙØ¯Ø Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ . پاÙÛÙÛÙØ ÙØ±Ø§Ø®ÙاÙÛ ÙØ§Û Ù Ø±Ø¨ÙØ·Ù را ب٠bigint ÙØ§Û بÙÙ Û ØªØ¨Ø¯ÛÙ Ù Û Ú©ÙØ¯.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)