Lewati ke isi

Untuk developer

Pustakanya kecil: dua fungsi, satu objek opsi, dan galat bertipe. Setiap keluaran di halaman ini dihitung pustaka saat halaman dibangun, bukan diketik tangan.

Belum dirilis ke npm

Nama terbilang di npm sudah dipakai paket lain yang tidak berhubungan dengan proyek ini, jadi nama rilisnya belum ditetapkan. Jangan pasang paket bernama terbilang dari npm dengan harapan mendapat pustaka ini. Sampai rilis, pasang dari sumber.

Pasang dari sumber

git clone https://github.com/andifathulms/terbilangcd terbilangpnpm installpnpm build:lib

Membangun dist/ — ESM, CJS, dan deklarasi tipe. Tanpa dependensi runtime.

Yang dijamin

  • BigInt di seluruh jalur aritmetika: tetap tepat di atas 2⁵³, tempat implementasi berbasis number mulai keliru tanpa suara.
  • Setiap nilai 0 sampai 1.000.000 diuji bolak-balik satu per satu, di setiap commit.
  • format dan parse saling membalik di bawah opsi yang sama.
  • Nol dependensi runtime. ESM dan CJS, dengan deklarasi tipe.
  • Permukaan publik kecil dan stabil: Rinci memakainya untuk slip gaji.

API

Tidak ada pengecualian yang dilempar dari permukaan publik. Setiap pemanggilan mengembalikan Hasil: { type: "ok", nilai } atau { type: "galat", galat }.

format(nilai: bigint | string, opsi?: Partial<Options>): Hasil<string>

Bilangan ke kata. Menerima bigint atau string digit (titik ribuan dan koma desimal boleh). number ditolak dengan galat bertipe, tidak dikonversi diam-diam.

  • format(1_000_001n){ type: 'ok', nilai: 'satu juta satu' }
    Coba di pengubah →
  • format('1.500,25', { mataUang: 'rupiah', sen: 'sen' }){ type: 'ok', nilai: 'seribu lima ratus rupiah dua puluh lima sen' }
    Coba di pengubah →
  • format(9_007_199_254_740_993n){ type: 'ok', nilai: 'sembilan kuadriliun tujuh triliun seratus sembilan puluh sembilan miliar dua ratus lima puluh empat juta tujuh ratus empat puluh ribu sembilan ratus sembilan puluh tiga' }
    Coba di pengubah →
  • format(10n ** 18n){ type: 'galat', galat: { type: 'di-luar-jangkauan', … } }
    Coba di pengubah →
parse(kata: string, opsi?: Partial<Options>): Hasil<Terurai>

Kata ke bilangan. Mengembalikan Terurai — negatif, bulat sebagai bigint, dan digit pecahan apa adanya.

  • parse('dua ratus lima puluh ribu'){ type: 'ok', nilai: { negatif: false, bulat: 250000n, pecahan: '' } }
    Coba di pengubah →
  • parse('seribu juta'){ type: 'galat', galat: { type: 'skala-tanpa-kuantitas', … } }
    Coba di pengubah →

Opsi

Semua opsi boleh dilewatkan sebagian; yang tidak disebut memakai bawaan. Kuncinya stabil — kunci yang sama dipakai di hash URL pengubah. Dasar pemakaian tiap pilihan ada di halaman Aturan.

KunciBawaanPilihan
sejutafalse
  • false — satu juta
  • true — sejuta
ejaanMiliar'baku'
  • 'baku' — satu miliar, satu triliun
  • 'varian' — satu milyar, satu trilyun
mataUang'tidak'
  • 'tidak' — seribu lima ratus
  • 'rupiah' — seribu lima ratus rupiah
sen'koma'
  • 'koma' — 1,25 → satu koma dua lima
  • 'sen' — 1,25 → satu rupiah dua puluh lima sen
kapitalisasi'tidak'
  • 'tidak' — seribu lima ratus rupiah
  • 'kalimat' — Seribu lima ratus rupiah
  • 'judul' — Seribu Lima Ratus Rupiah

Penolakan

Pustaka menolak alih-alih menebak. Setiap galat membawa type yang bisa di-switch secara tuntas dan pesan yang menyebut persis apa yang gagal.

typeArtinya
masukan-kosongMasukan kosong.
tipe-tidak-didukungTipe masukan tidak didukung.
bukan-bilanganBukan bilangan yang sah.
di-luar-jangkauanDi luar jangkauan yang dapat disitasi.
pecahan-terlalu-panjangMode sen hanya menerima dua digit di belakang koma.
opsi-bertentanganKombinasi opsi tidak bermakna.
kata-tidak-dikenalAda kata yang tidak dikenal.
skala-tanpa-kuantitasKata skala tanpa kuantitas.
urutan-skala-salahUrutan kata skala tidak menurun.
susunan-tidak-sahSusunan kata tidak sah.