Rumah >hujung hadapan web >tutorial js >Memahami BigInt dalam JavaScript

Memahami BigInt dalam JavaScript

WBOY
WBOYasal
2024-09-11 06:34:331162semak imbas

Understanding BigInt in JavaScript


Dalam JavaScript, nombor secara tradisinya diwakili menggunakan jenis Nombor, yang mematuhi piawaian IEEE 754 untuk aritmetik titik terapung berketepatan dua. Perwakilan ini, walaupun serba boleh, mempunyai had: ia boleh mewakili integer dengan selamat hanya sehingga (2^{53} - 1) (atau (9,007,199,254,740,991)). Untuk aplikasi yang memerlukan integer yang lebih besar, JavaScript memperkenalkan penyelesaian melalui jenis BigInt.

Apakah BigInt?

BigInt ialah objek terbina dalam JavaScript yang menyediakan cara untuk mewakili nombor bulat yang lebih besar daripada yang boleh dikendalikan oleh jenis Nombor. Tidak seperti Nombor, yang sesuai untuk aritmetik titik terapung dan boleh mengendalikan nilai antara lebih kurang (-1.8 kali 10^{308}) dan (1.8 kali 10^{308}), BigInt direka khusus untuk aritmetik integer ketepatan arbitrari.

Mencipta Nilai BigInt

Terdapat beberapa cara untuk mencipta nilai BigInt:

  1. Menggunakan BigInt Constructor:
   const bigIntValue = BigInt(123456789012345678901234567890);

Perhatikan bahawa BigInt menerima rentetan dan nombor, tetapi apabila menggunakan nombor, ia harus berada dalam julat jenis Nombor.

  1. Menggunakan BigInt Literal: Literal BigInt diakhiri dengan n:
   const bigIntLiteral = 123456789012345678901234567890n;

Ini ialah cara yang lebih ringkas untuk menentukan nilai BigInt secara langsung.

Operasi dengan BigInt

BigInt menyokong kebanyakan pengendali aritmetik standard. Berikut ialah gambaran ringkas:

  • Tambahan (+)
  const a = 10n;
  const b = 20n;
  const sum = a + b; // 30n
  • Tolak (-)
  const difference = b - a; // 10n
  • Pendaraban (*)
  const product = a * b; // 200n
  • Bahagian (/)
  const quotient = b / 3n; // 6n (Note: Division results in a `BigInt` which is truncated towards zero)
  • Modulus (%)
  const remainder = b % 3n; // 2n
  • Eksponensiasi (``)**
  const power = a ** 3n; // 1000n

Perbandingan dan Kesaksamaan

BigInt boleh dibandingkan menggunakan operator perbandingan standard. Ambil perhatian bahawa nilai BigInt dan nilai Nombor tidak boleh dibandingkan secara langsung:

const a = 10n;
const b = 10;
console.log(a == b); // false
console.log(a === BigInt(b)); // true

Menukar Antara BigInt dan Nombor

Penukaran antara BigInt dan Number boleh dilakukan menggunakan kaedah penukaran eksplisit:

  • Dari BigInt kepada Nombor:
  const bigIntValue = 123n;
  const numberValue = Number(bigIntValue);

Nota: Ini boleh kehilangan ketepatan jika nilai BigInt terlalu besar.

  • Dari Nombor kepada BigInt:
  const numberValue = 123;
  const bigIntValue = BigInt(numberValue);

Had dan Pertimbangan

  1. Operasi Campuran: Anda tidak boleh mencampurkan BigInt dan Number dalam operasi aritmetik tanpa penukaran eksplisit:
   const a = 10n;
   const b = 5;
   // The following line will throw a TypeError
   const result = a + b; 
  1. Sokongan JSON: BigInt tidak disokong dalam siri JSON secara langsung. Percubaan untuk menyelaraskan nilai BigInt akan mengakibatkan TypeError:
   const bigIntValue = 123n;
   JSON.stringify(bigIntValue); // Throws TypeError

Untuk mengendalikan BigInt dalam JSON, anda mungkin perlu menukarnya kepada rentetan terlebih dahulu:

   const bigIntValue = 123n;
   const jsonString = JSON.stringify({ value: bigIntValue.toString() });
  1. Prestasi: Walaupun BigInt menawarkan ketepatan sewenang-wenangnya, ia boleh menjadi lebih perlahan berbanding dengan operasi Nombor disebabkan oleh kerumitan pengendalian integer yang lebih besar.

Kes Penggunaan

BigInt amat berguna dalam senario di mana ketepatan dengan integer besar adalah penting, seperti:

  • Kriptografi
  • Pengiraan berskala besar (cth., aplikasi kewangan)
  • Aritmetik ketepatan tinggi dalam pengiraan saintifik

Kesimpulan

BigInt ialah tambahan hebat kepada JavaScript, mengembangkan keupayaannya untuk mengendalikan integer melebihi had jenis Nombor. Memahami operasi, had dan kes penggunaan yang sesuai boleh membantu dalam memanfaatkan faedahnya untuk aplikasi yang memerlukan pengiraan integer yang besar.


Atas ialah kandungan terperinci Memahami BigInt dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Perbezaan antara SSR dan CSRArtikel seterusnya:Perbezaan antara SSR dan CSR