BigInt JavaScript

Rekomendasi Kursus:

Variabel BigInt JavaScript digunakan untuk menyimpan nilai integer yang terlalu besar untuk digunakan dengan bilangan biasa JavaScript.

Kemampuan Akurasi Integer JavaScript

Integer JavaScript hanya dapat diakurasi hingga 15 digit:

Kemampuan Akurasi Integer
let x = 999999999999999;

亲自试一试

let y = 9999999999999999;

Dalam JavaScript, semua bilangan disimpan dalam format floating-point 64-bit (Standar IEEE 754).

Dengan standar ini, bilangan besar tidak dapat disampaikan dengan akurasi, akan diukur semula.

  • yang paling besar adalah 9007199254740991(253-1)
  • yang paling kecil adalah -9007199254740991(-(253-1))

Nilai integer di luar rentang ini akan kehilangan akurasi.

Bagaimana membuat BigInt

Untuk membuat BigInt, tambahkan natau panggil BigInt() Fungsi:

Contoh 1

let x = 9999999999999999;
let y = 9999999999999999n;

亲自试一试

Contoh 2

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

亲自试一试

BigInt: Jenis data baru JavaScript

Tipe JavaScript untuk BigInt adalah "bigint

Contoh

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

亲自试一试

BigInt adalah jenis data numerik kedua di JavaScript (setelah Number).

Untuk BigInt, jumlah jenis data yang didukung JavaScript adalah 8 jenis:

  1. String
  2. Number
  3. Bigint
  4. Boolean
  5. Tidak Ditentukan
  6. Null
  7. Symbol
  8. Objek

Operator BigInt

Operator yang boleh digunakan untuk bilangan Number JavaScript juga boleh digunakan untuk BigInt.

Contoh Pembaruan BigInt

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

亲自试一试

Perhatian

Tidak diizinkan untuk melakukan operasi aritmetik antara BigInt dan Number (konversi tipe akan hilang informasi).

BigInt tidak dapat melakukan operasi shift arah kanan tak beraturan (>>>), karena dia tidak memiliki lebar yang tetap.

Desimal BigInt

BigInt tidak dapat memiliki bilangan desimal.

Contoh perpajakan BigInt

let x = 5n;
let y = x / 2;
// Error: Tidak dapat campur BigInt dan tipe lain, gunakan konversi yang jelas.
let x = 5n;
let y = Number(x) / 2;

亲自试一试

BigInt heksadesimal, oktal dan biner

BigInt juga dapat ditulis dalam bentuk heksadesimal, oktal atau biner:

Contoh BigInt heksadesimal

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

亲自试一试

Kecurigaan Presisi

Penyesuaian mungkin akan mengancam keselamatan program:

Contoh MAX_SAFE_INTEGER

9007199254740992 === 9007199254740993; // untuk benar !!!

亲自试一试

Dukungan pelayar

Dari September 2020, semua pelayar mendukung BigInt:

Chrome Edge Firefox Safari Opera
Chrome 67 Edge 79 Firefox 68 Safari 14 Opera 54
Mei 2018 Januari 2020 Juli 2019 September 2020 Juni 2018

Bilangan bulat yang aman paling kecil dan paling besar

ES6 menambahkan properti max dan min kepada objek Number:

  • MAX_SAFE_INTEGER
  • MIN_SAFE_INTEGER

Contoh MAX_SAFE_INTEGER

let x = Number.MAX_SAFE_INTEGER;

亲自试一试

Contoh MIN_SAFE_INTEGER

let x = Number.MIN_SAFE_INTEGER;

亲自试一试

Method angka baru

ES6 juga menambahkan dua method baru kepada objek Number:

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

Number.isInteger() 方法

如果参数是整数,则 Number.isInteger() 方法返回 true

isInteger() 实例

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

亲自试一试

Number.isSafeInteger() 方法

安全整数是可以精确表示为双精度数的整数。

如果参数是安全整数,则 Number.isSafeInteger() 方法返回 true

isSafeInteger() 实例

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

亲自试一试

安全整数是从 -(253 - 1) 到 +(253 - 1) 的所有整数。

这是一个安全整数:9007199254740991。这不是一个安全整数:9007199254740992。