You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.5 KiB
JavaScript

window._terbilang = function (bilangan) {
bilangan = String(bilangan);
var angka = new Array('0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');
var kata = new Array('', 'satu', 'dua', 'tiga', 'empat', 'lima', 'enam', 'tujuh', 'delapan', 'sembilan');
var tingkat = new Array('', 'ribu', 'juta', 'milyar', 'triliun');
var panjang_bilangan = bilangan.length;
var kalimat = subkalimat = kata1 = kata2 = kata3 = "";
var i = j = 0;
/* pengujian panjang bilangan */
if (panjang_bilangan > 15) {
kalimat = "Diluar Batas";
return kalimat;
}
/* mengambil angka-angka yang ada dalam bilangan, dimasukkan ke dalam array */
for (i = 1; i <= panjang_bilangan; i++) {
angka[i] = bilangan.substr(-(i), 1);
}
i = 1;
j = 0;
kalimat = "";
/* mulai proses iterasi terhadap array angka */
while (i <= panjang_bilangan) {
subkalimat = "";
kata1 = "";
kata2 = "";
kata3 = "";
/* untuk Ratusan */
if (angka[i + 2] != "0") {
if (angka[i + 2] == "1") {
kata1 = "Seratus";
} else {
kata1 = kata[angka[i + 2]] + " ratus";
}
}
/* untuk Puluhan atau Belasan */
if (angka[i + 1] != "0") {
if (angka[i + 1] == "1") {
if (angka[i] == "0") {
kata2 = "Sepuluh";
} else if (angka[i] == "1") {
kata2 = "Sebelas";
} else {
kata2 = kata[angka[i]] + " belas";
}
} else {
kata2 = kata[angka[i + 1]] + " puluh";
}
}
/* untuk Satuan */
if (angka[i] != "0") {
if (angka[i + 1] != "1") {
kata3 = kata[angka[i]];
}
}
/* pengujian angka apakah tidak nol semua, lalu ditambahkan tingkat */
if ((angka[i] != "0") || (angka[i + 1] != "0") || (angka[i + 2] != "0")) {
subkalimat = kata1 + " " + kata2 + " " + kata3 + " " + tingkat[j] + " ";
}
/* gabungkan variabe sub kalimat (untuk Satu blok 3 angka) ke variabel kalimat */
kalimat = subkalimat + kalimat;
i = i + 3;
j = j + 1;
}
/* mengganti Satu Ribu jadi Seribu jika diperlukan */
if ((angka[5] == "0") && (angka[6] == "0")) {
kalimat = kalimat.replace("Satu Ribu", "Seribu");
}
return (kalimat.trim().replace(/\s{2,}/g, ' ')) + " rupiah";
}