Lewati ke konten

Tipe Data: bigint

Setelah membaca halaman ini, kamu akan mampu:

  • Menjelaskan mengapa bigint dibutuhkan
  • Menulis nilai bigint dengan benar
  • Membedakan number dan bigint
  • Menghindari kesalahan mencampur keduanya

Tipe number sangat cukup untuk hampir semua kebutuhan siswa: nilai ujian, harga barang, umur, tinggi badan, dan jumlah siswa. Tapi ada batas angka yang bisa disimpan dengan aman oleh number.

Untuk angka bulat yang sangat besar, TypeScript menyediakan tipe bigint.


Angka number di JavaScript disimpan menggunakan format yang punya batas presisi. Batas angka bulat aman adalah:

📄 TypeScript
Number.MAX_SAFE_INTEGER
// 9007199254740991

Jika angka lebih besar dari itu, beberapa digit dapat berubah tanpa kamu sadari. bigint dibuat untuk menyimpan bilangan bulat besar dengan presisi tetap.


Analogi: Kalkulator Biasa vs Kalkulator Super

Section titled “Analogi: Kalkulator Biasa vs Kalkulator Super”

Bayangkan:

  • number adalah kalkulator biasa. Cukup untuk menghitung nilai, uang jajan, dan luas ruangan.
  • bigint adalah kalkulator super. Dipakai saat menghitung jumlah transaksi bank skala besar, nomor identitas raksasa, atau data astronomi.

Kamu tidak membawa kalkulator super untuk menghitung 2 + 3, tapi alat itu penting saat angka sudah terlalu besar untuk alat biasa.


Tambahkan huruf kecil n di akhir bilangan bulat:

📄 TypeScript
const jumlahBintang: bigint = 999999999999999999999999n
const saldoSangatBesar: bigint = 9007199254740992n
const nol: bigint = 0n
const utang: bigint = -1000000000000000000n

Huruf n adalah penanda bahwa angka tersebut bertipe bigint, bukan number.


number
┌──────────────────────────────┐
│ aman sampai 9.007.199...e15 │
└──────────────────────────────┘
bigint
┌──────────────────────────────────────────┐
│ dapat menyimpan bilangan bulat jauh lebih│
│ besar dengan digit tetap tepat │
└──────────────────────────────────────────┘

Buat file src/bab1/bigint.ts:

📄 TypeScript
const batasNumberAman: number = Number.MAX_SAFE_INTEGER
const angkaBesar: bigint = 9007199254740992n
const jumlahData: bigint = 123456789012345678901234567890n
console.log("Batas number aman:", batasNumberAman)
console.log("Angka bigint:", angkaBesar)
console.log("Jumlah data besar:", jumlahData)
const dataBaru: bigint = jumlahData + 500n
console.log("Setelah ditambah 500:", dataBaru)

Jalankan:

tsx src/bab1/bigint.ts

Output akan menampilkan angka besar tanpa pembulatan.


📄 TypeScript
const angkaBesar: bigint = 9007199254740992n
  • const — nilai tidak akan diubah
  • angkaBesar — nama variabel
  • : bigint — variabel hanya boleh menyimpan bigint
  • 9007199254740992n — angka besar dengan penanda n
📄 TypeScript
const dataBaru: bigint = jumlahData + 500n

Kedua nilai adalah bigint. Karena itu, TypeScript mengizinkan penjumlahan tersebut.


number dan bigint Tidak Boleh Dicampur Langsung

Section titled “number dan bigint Tidak Boleh Dicampur Langsung”
📄 TypeScript
const jumlahSiswa: number = 36
const jumlahData: bigint = 1000000000000000000n
// const total = jumlahSiswa + jumlahData
// Error! Operator '+' cannot be applied to types 'number' and 'bigint'.

Jika memang perlu, ubah salah satu tipe secara sengaja:

📄 TypeScript
const total: bigint = BigInt(jumlahSiswa) + jumlahData
console.log(total)

bigint hanya menyimpan bilangan bulat. Tidak bisa menyimpan desimal:

📄 TypeScript
const harga: bigint = 12.5n
// Error! BigInt literals must be integers.

Jika kamu butuh angka desimal, gunakan number.


📄 TypeScript
const angka: bigint = 999999999999999999
// Error! Nilai di atas dibaca sebagai number, bukan bigint.

Perbaikan:

📄 TypeScript
const angka: bigint = 999999999999999999n
📄 TypeScript
const hasil = 10n + 5
// Error saat runtime jika dijalankan

Perbaikan:

📄 TypeScript
const hasil = 10n + 5n


Buat file src/bab1/latihan-bigint.ts:

  1. Buat konstanta jumlahPendudukDunia bertipe bigint dengan angka besar
  2. Buat konstanta jumlahPendudukIndonesia bertipe bigint
  3. Tambahkan keduanya ke dalam variabel totalPenduduk
  4. Tampilkan semua hasil
  5. Pastikan semua angka bigint diakhiri huruf n

  • bigint menyimpan bilangan bulat sangat besar secara tepat
  • Tulis bigint dengan n di akhir: 123n
  • bigint tidak bisa menyimpan desimal
  • number dan bigint tidak boleh dicampur langsung
  • Untuk data normal, number tetap pilihan yang tepat