Fungsi Terbilang Dengan C#
Ketika membuat sebuah program yang berhubungan dengan nilai uang, kita biasanya akan menampiklkan jumlah rupiah dalam bentuk terbilang. Misal dalam kuitansi, invoice maupun lainnya. Sebagai contoh nilai “1.250.000” akan ditampilkan menjadi “Satu juta dua ratus lima puluh ribu”. Nah berikut ini salah satu code yang simple untuk membuat fungsi tersebut. Ditulis dalam bahasa C#, untuk Anda yang pakai bahasa lain silahkan terjemahkan sendiri.
private static readonly string[] _satuan = new[] { "nol", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan" }; private static readonly string[] _belasan = new[] { "sepuluh", "sebelas", "dua belas", "tiga belas", "empat belas", "lima belas", "enam belas", "tujuh belas", "delapan belas", "sembilan belas" }; private static readonly string[] _puluhan = new[] { "", "", "dua puluh", "tiga puluh", "empat puluh", "lima puluh", "enam puluh", "tujuh puluh", "delapan puluh", "sembilan puluh" }; private static readonly string[] _ribuan = new[] { "", "ribu", "juta", "milyar", "triliyun" }; public static string Terbilang(Decimal d) { string strResult; Decimal frac = d - Decimal.Truncate(d); if (Decimal.Compare(frac, 0.0m) != 0) { strResult = Terbilang(Decimal.Round(frac*100)) + " sen"; } else { strResult = "rupiah"; } string strTemp = Decimal.Truncate(d).ToString(Definition.FORMAT_PROVIDER); for (int i = strTemp.Length; i > 0; i--) { int nDigit = Convert.ToInt32(strTemp.Substring(i - 1, 1)); int nPos = (strTemp.Length - i) + 1; switch (nPos%3) { case 1: bool bAllZeros = false; string tmpBuff; if (i == 1) { tmpBuff = _satuan[nDigit] + " "; } else if (strTemp.Substring(i - 2, 1) == "1") { tmpBuff = _belasan[nDigit] + " "; } else if (nDigit > 0) { tmpBuff = _satuan[nDigit] + " "; } else { bAllZeros = true; if (i > 1) { if (strTemp.Substring(i - 2, 1) != "0") { bAllZeros = false; } } if (i > 2) { if (strTemp.Substring(i - 3, 1) != "0") { bAllZeros = false; } } tmpBuff = ""; } if ((!bAllZeros) && (nPos > 1)) { if ((strTemp.Length == 4) && (strTemp.Substring(0, 1) == "1")) { tmpBuff = "se" + _ribuan[(int) Decimal.Round(nPos/3m)] + " "; } else { tmpBuff += _ribuan[(int) Decimal.Round(nPos/3)] + " "; } } strResult = tmpBuff + strResult; break; case 2: if (nDigit > 0) { strResult = _puluhan[nDigit] + " " + strResult; } break; case 0: if (nDigit > 0) { if (nDigit == 1) { strResult = "seratus " + strResult; } else { strResult = _satuan[nDigit] + " ratus " + strResult; } } break; } } strResult = strResult.Trim().ToLower(); if (strResult.Length > 0) { strResult = strResult.Substring(0, 1).ToUpper() + strResult.Substring(1, strResult.Length - 1); } return strResult; }
Semoga bermanfaat dan selamat belajar 🙂
Leave a Reply
Want to join the discussion?Feel free to contribute!