Yaah untuk iseng-iseng daripada blog saya ga aktif.
Fungsi ‘terbilang’ pake C#. Saya sendiri masih newbie di C# dan fungsi ini belum pernah saya pake untuk produksi yang beneran. Sebenarnya fungsi ini hanya porting dari yang versi Pascal-nya (namanya juga baru belajar).
Seperti biasa, harap maklum, tidak ada dokumentasi apa-apa di kodingnya. Dan mohon masukan-masukan supaya fungsi ini bisa lebih bermanfaat lagi.
string[] satuan = new string[10] {"nol", "satu", "dua", "tiga", "empat",
"lima", "enam", "tujuh", "delapan", "sembilan"};
string[] belasan = new string[10] {"sepuluh", "sebelas", "dua belas",
"tiga belas", "empat belas", "lima belas", "enam belas", "tujuh belas",
"delapan belas", "sembilan belas"};
string[] puluhan = new string[10] {"", "", "dua puluh",
"tiga puluh", "empat puluh", "lima puluh", "enam puluh",
"tujuh puluh", "delapan puluh", "sembilan puluh"};
string[] ribuan = new string[5] {"", "ribu", "juta", "milyar", "triliyun"};
string Terbilang(Decimal d)
{
string strHasil = "";
Decimal frac = d - Decimal.Truncate(d);
if (Decimal.Compare(frac, 0.0m) != 0)
strHasil = Terbilang(Decimal.Round(frac * 100)) + " sen";
else
strHasil = "rupiah";
int nDigit = 0;
int nPosisi = 0;
string strTemp = Decimal.Truncate(d).ToString();
for (int i = strTemp.Length; i > 0; i--)
{
string tmpBuff = "";
nDigit = Convert.ToInt32(strTemp.Substring(i - 1, 1));
nPosisi = (strTemp.Length - i) + 1;
switch (nPosisi % 3)
{
case 1:
bool bAllZeros = false;
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) && (nPosisi > 1))
if ((strTemp.Length == 4) && (strTemp.Substring(0, 1) == "1"))
tmpBuff = "se" + ribuan[(int)Decimal.Round(nPosisi / 3m)] + " ";
else
tmpBuff = tmpBuff + ribuan[(int)Decimal.Round(nPosisi/3)] + " ";
strHasil = tmpBuff + strHasil;
break;
case 2:
if (nDigit > 0)
strHasil = puluhan[nDigit] + " " + strHasil;
break;
case 0:
if (nDigit > 0)
if (nDigit == 1)
strHasil = "seratus " + strHasil;
else
strHasil = satuan[nDigit] + " ratus " + strHasil;
break;
}
}
strHasil = strHasil.Trim().ToLower();
if (strHasil.Length > 0)
{
strHasil = strHasil.Substring(0, 1).ToUpper() +
strHasil.Substring(1, strHasil.Length - 1); } return strHasil; }