BigInt ya JavaScript

JavaScript BigInt 变量用于存储太大而无法用普通 JavaScript 数字表示的大整数值。

Hisia ya namba ya JavaScript

Hisia ya namba ya JavaScript inaweza kuwa kina kwa 15 chaguo zaidi:

Adabu ya hisia ya namba

let x = 999999999999999;
let y = 9999999999999999;

Tafakari kwa kuzifuatilia

Kwa JavaScript, vitabu vya hisia vyote vinazotumika kwa muundo wa kina 64 (standari ya IEEE 754).

Kwa masababu haya, namba kubwa zinaungwa kwa nafasi kwa kusaidia nafasi.

Kwa sababu ya masababu hizi, JavaScript inaweza kusaidia kumazuri namba kubwa sana zilizotumiwa kwa kufikia nafasi kwa kusaidia nafasi.

  • Inafikia 9007199254740991(253-1)
  • Inaingia ,53-1))

Adabu za namba zilizotumiwa zimekaa nafasi kwa uadilifu.

Husaidia kumengenia BigInt

Kwa kumengenia BigInt, inafaa kuongeza kwa uendelevu wa namba n,au kusaidia BigInt() Funguo:

Mfano 1

let x = 9999999999999999;
let y = 9999999999999999n;

Tafakari kwa kuzifuatilia

Mfano 2

let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345);

Tafakari kwa kuzifuatilia

BigInt: Aina ya hisia ya JavaScript ya kina

Aina ya JavaScript ya BigInt ni "bigint

Mfano

let x = BigInt(999999999999999);
let type = typeof x;

Tafakari kwa kuzifuatilia

BigInt ni aina ya hisia ya namba ya pili katika JavaScript (katika kufuatia Number).

Kwa BigInt, mawendo ya aina ya hisia ya JavaScript ina uainishaji wa 8 aina:

  1. String
  2. Number
  3. Bigint
  4. Boolean
  5. Undefined
  6. Null
  7. Symbol
  8. Object

Tofauti za hisia ya BigInt

Tofauti ya hisia ya JavaScript Number inaweza kutumika pia kwa BigInt.

Mfano wa kipendenia ya BigInt

let x = 9007199254740995n;
let y = 9007199254740995n;
let z = x * y;

Tafakari kwa kuzifuatilia

Kujaonesha

Hataru kufanyia matokeo ya uharibifu kati ya BigInt na Number (michakato wa ujenzi unaweza kumaliza habari).

BigInt haaminwa kufanyia uharibifu wa kushika kushika kwa ukishika (>>>), kwa sababu ina ukubwa wa uharibifu bila uadilifu.

Namba za kutosha ya BigInt

BigInt haaminwa na namba za kutosha.

Mfano wa uchaguzi wa BigInt

let x = 5n;
let y = x / 2;
// Kuchukua hatari: Haingie inasemekana kuongeza BigInt na aina nyingine, tumia ujumbe kwa kuzingatia.
let x = 5n;
let y = Number(x) / 2;

Tafakari kwa kuzifuatilia

Labda la BigInt, kuuoa na kuuandika kwa labda vingine

Inaweza kuandikwa kwa labda, kuuoa na kuuandika kwa labda vingine vya BigInt:

Mfano wa BigInt kwa uhusiano wa labda

let hex = 0x20000000000003n;
let oct = 0o400000000000000003n;
let bin = 0b100000000000000000000000000000000000000000000000000011n;

Tafakari kwa kuzifuatilia

Precision Curiosity

Ukifadhi kwa nafasi inaweza kumkoronesha ukurabu wa programu:

Mfano wa MAX_SAFE_INTEGER

9007199254740992 === 9007199254740993; // Inaonekana kama true !!!

Tafakari kwa kuzifuatilia

Mwongozo wa barabara

Kuanzia Septemba 2020, barabara zote zinaongeza BigInt:

Chrome Edge Firefox Safari Opera
Chrome 67 Edge 79 Firefox 68 Safari 14 Opera 54
2018 Mei 5 2020 Januari 14 2019 Julai 7 2020 Septemba 9 2018 Novemba 6

Mifano ya kina na kikubwa ya kumtumika kwa nafasi

ES6 inayotambua vipso vya max na min kwa kifaa cha Number:

  • MAX_SAFE_INTEGER
  • MIN_SAFE_INTEGER

Mfano wa MAX_SAFE_INTEGER

let x = Number.MAX_SAFE_INTEGER;

Tafakari kwa kuzifuatilia

Mfano wa MIN_SAFE_INTEGER

let x = Number.MIN_SAFE_INTEGER;

Tafakari kwa kuzifuatilia

Vifaa vya numbering mpya

ES6 inayotambua vifaa vingine vya Number:

  • Number.isInteger()
  • Number.isSafeInteger()

Methodi ya Number.isInteger()

Kama thamani ni inani, methodi ya Number.isInteger() inatumia watu watu.

Mivuno wa isInteger()

Number.isInteger(10);
Number.isInteger(10.5);

Tafakari kwa kuzifuatilia

Methodi ya Number.isSafeInteger()

Inani za haki ni inani ambayo inaweza kuelewa kwa thamani ya juu ya juu ya adui.

Kama thamani ni inani ya haki, methodi ya Number.isSafeInteger() inatumia watu watu.

Mivuno wa isSafeInteger()

Number.isSafeInteger(10);
Number.isSafeInteger(12345678901234567890);

Tafakari kwa kuzifuatilia

Inani za haki ni inani za kuzaliwa kwa -(253 - 1) hadi +(253 - 1) ya kila inani.

Hii ni inani ya haki:9007199254740991. Hii si inani ya haki:9007199254740992.