Ide Dibalik Pembuatan Script Membilang Bilangan
May 10th, 2009 | by rosihanari |
Cetak Artikel
Bagaimana sih cara membuat script untuk membilang suatu bilangan? Jika kita punya suatu bilangan misalkan ’1901′ maka script akan menghasilkan output ‘seribu sembilan ratus satu’. Demikian pertanyaan yang pernah diajukan oleh salah satu pengunjung setia blog ini.
Bila membaca pertanyaan di atas, saya teringat waktu kuliah dulu dimana pertanyaan yang sama pernah diberikan oleh dosen atau guru saya. He.. 3x.. maksud saya tugas kuliah.. Butuh waktu berhari-hari untuk memikirkan ide dalam membuat scriptnya, sampai-sampai tidak sempat tidur. Ah… gak usah dilanjutin deh, ntar ketahuan kalo mendramatisir
OK.. dalam artikel ini saya coba membahas bagaimana ide dalam membuat script untuk membilang suatu bilangan.
Ide utama dari pembuatan script untuk membilang bilangan ini adalah terlebih dahulu kita bagi-bagi bilangannya ke dalam kelompok 3 digit (ribuan) seperti halnya format bilangan dalam mata uang.
Misalkan kita memiliki bilangan ’1234567890′, maka kita bagi terlebih dahulu menjadi ’1.234.567.890′. Dari contoh ini kita mendapatkan 4 kelompok ribuan, yaitu ’1′, ’234′, ’567′ dan ’890′, yang selanjutnya untuk setiap kelompok kita beri nomor urut kelompok, misalkan: kelompok 1 berisi ’1′, kelompok 2 berisi ’234′, kelompok 3 berisi ’567′ dan kelompok 4 berisi ’890′.
Nah.. selanjutnya kita nyatakan setiap kelompok tersebut ke dalam kalimat. Jika kelompok ribuan tersebut terletak pada urutan ke 1 dari 4 kelompok ribuan yang ada, maka nanti berbentuk … ‘milyar’ di mana ‘…’ adalah terbilang dari bilangan pada kelompok tersebut. Jika kelompok ribuan terletak pada urutan ke 2 dari 4 kelompok ribuan yang ada, maka nanti berbentuk … ‘juta’ dst. Sehingga dari contoh di atas, diharapkan akan diperoleh format terbilang: ‘… milyar … juta … ribu …’
Konsep di atas bisa kita kembangkan sampai dengan tingkat ‘trilyun’. Bila kita kembangkan dalam tingkat trilyun, maka nantinya terdapat 5 kelompok ribuan. Jika kelompok ribuan terletak pada urutan ke-1 dari 5 kelompok yang ada, maka akan berbentuk … ‘trilyun’. Jika kelompok ribuan terletak pada urutan ke-2 dari 5, maka berbentuk … ‘milyar’, urutan ke-3 dari 5 akan berbentuk … ‘juta’, dst.
Setelah kita dapatkan format terbilang untuk masing-masing kelompok, langkah berikutnya kita terjemahkan semua bilangan yang ada di setiap kelompok. Seperti pada contoh di atas, kita terjemahkan bilangan yang ada di kelompok ke-1 yaitu ’1′ menjadi ‘satu’. Kelompok ke-2 yaitu ’234′ menjadi ‘dua ratus tiga puluh empat’. Kelompok ke-3 yaitu ’567′ menjadi ‘lima ratus enam puluh tujuh’, serta kelompok ke-4 yaitu ’890′ menjadi ‘delapan ratus sembilan puluh’
Dengan menggabung kedua langkah di atas maka akan diperoleh hasil terbilang : ‘satu milyar dua ratus tiga puluh empat juta lima ratus enam puluh tujuh ribu delapan ratus sembilan puluh’.
Nah… implementasi dari konsep di atas akan diperoleh script berikut ini (script ditulis dalam PHP)
terbilang.php
<?php
function bilangRatusan($x)
{
// function untuk membilang bilangan pada setiap kelompok
$kata = array('', 'satu ', 'dua ', 'tiga ' , 'empat ', 'lima ', 'enam ', 'tujuh ', 'delapan ', 'sembilan ');
$string = '';
$ratusan = floor($x/100);
$x = $x % 100;
if ($ratusan > 1) $string .= $kata[$ratusan]."ratus "; // membentuk kata '... ratus'
else if ($ratusan == 1) $string .= "seratus "; // membentuk kata khusus 'seratus '
$puluhan = floor($x/10);
$x = $x % 10;
if ($puluhan > 1)
{
$string .= $kata[$puluhan]."puluh "; // membentuk kata '... puluh'
$string .= $kata[$x]; // membentuk kata untuk satuan
}
else if (($puluhan == 1) && ($x > 0)) $string .= $kata[$x]."belas "; // kejadian khusus untuk bilangan yang berbentuk kata '... belas'
else if (($puluhan == 1) && ($x == 0)) $string .= $kata[$x]."sepuluh "; // kejadian khusus untuk bilangan 10
else if ($puluhan == 0) $string .= $kata[$x]; // membentuk kata untuk satuan
return $string;
}
function terbilang($x)
{
// membentuk format bilangan XXX.XXX.XXX.XXX.XXX
$x = number_format($x, 0, "", ".");
// memecah kelompok ribuan berdasarkan tanda '.'
$pecah = explode(".", $x);
$string = "";
// membentuk format terbilang '... trilyun ... milyar ... juta ... ribu ...'
for($i = 0; $i <= count($pecah)-1; $i++)
{
if ((count($pecah) - $i == 5) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i])."triliyun "; // membentuk kata '... trilyun'
else if ((count($pecah) - $i == 4) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i])."milyar "; // membentuk kata '... milyar'
else if ((count($pecah) - $i == 3) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i])."juta "; // membentuk kata '... juta'
else if ((count($pecah) - $i == 2) && ($pecah[$i] == 1)) $string .= "seribu "; // kejadian khusus untuk bilangan dalam format 1XXX (yang mengandung kata 'seribu')
else if ((count($pecah) - $i == 2) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i])."ribu "; // membentuk kata '... ribu'
else if ((count($pecah) - $i == 1) && ($pecah[$i] != 0)) $string .= bilangRatusan($pecah[$i]);
}
return $string;
}
?>
Selanjutnya bagaimana cara menggunakan script di atas? ya… tinggal kita includekan script di atas lalu panggil function terbilang(). Berikut ini contohnya:
<?php include "terbilang.php"; $bil = 10001901; echo terbilang($bil); // akan menghasilkan 'sepuluh juta seribu sembilan ratus satu' ?>
[ Download Script ]
Bila Anda menemukan sebuah ‘bug’ atau kelemahan script di atas bisa kita diskusikan melalui komentar di bawah ini. Semoga bermanfaat.
| Baca Juga Artikel Terkait |
Kata kunci: bilangan - PHP - script -




dan bagaimana kalo bilangan kita bukan lebih dari 11 digit pak..? misalnya 200.000.000.000?
@wahid: ya.. gak masalah mas, tinggal dimodif dikit di scriptnya
pa, bagaimana jika ada desimalnya misalkan 100.27
@johny: konsepnya mudah mas, caranya anda pecah dulu angkanya berdasarkan tanda titik (.) nya, untuk mendapatkan angka di sebelah kiri titik dan di sebelah kanan titik. Untuk kedua angka tersebut tuliskan terbilangnya dengan function di atas. Jangan lupa sisipkan kata ‘koma’ di antara dua kalimat terbilangnya.