Fungsi Terbilang

PHP:
  1. <?php
  2. function kekata($x) {
  3.     $x = abs($x);
  4.     $angka = array("", "satu", "dua", "tiga", "empat", "lima",
  5.     "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas");
  6.     $temp = "";
  7.     if ($x <12) {
  8.         $temp = " ". $angka[$x];
  9.     } else if ($x <20) {
  10.         $temp = kekata($x - 10). " belas";
  11.     } else if ($x <100) {
  12.         $temp = kekata($x/10)." puluh". kekata($x % 10);
  13.     } else if ($x <200) {
  14.         $temp = " seratus" . kekata($x - 100);
  15.     } else if ($x <1000) {
  16.         $temp = kekata($x/100) . " ratus" . kekata($x % 100);
  17.     } else if ($x <2000) {
  18.         $temp = " seribu" . kekata($x - 1000);
  19.     } else if ($x <1000000) {
  20.         $temp = kekata($x/1000) . " ribu" . kekata($x % 1000);
  21.     } else if ($x <1000000000) {
  22.         $temp = kekata($x/1000000) . " juta" . kekata($x % 1000000);
  23.     } else if ($x <1000000000000) {
  24.         $temp = kekata($x/1000000000) . " milyar" . kekata(fmod($x,1000000000));
  25.     } else if ($x <1000000000000000) {
  26.         $temp = kekata($x/1000000000000) . " trilyun" . kekata(fmod($x,1000000000000));
  27.     }      
  28.         return $temp;
  29. }
  30. function terbilang($x, $style=4) {
  31.     if($x<0) {
  32.         $hasil = "minus ". trim(kekata($x));
  33.     } else {
  34.         $hasil = trim(kekata($x));
  35.     }      
  36.     switch ($style) {
  37.         case 1:
  38.             $hasil = strtoupper($hasil);
  39.             break;
  40.         case 2:
  41.             $hasil = strtolower($hasil);
  42.             break;
  43.         case 3:
  44.             $hasil = ucwords($hasil);
  45.             break;
  46.         default:
  47.             $hasil = ucfirst($hasil);
  48.             break;
  49.     }      
  50.     return $hasil;
  51. }
  52. ?>

Penggunaan:

PHP:
  1. terbilang($bilangan,$style);

$bilangan = Bilangan yang akan diterjemahkan.
$style = Format penulisan untuk output, 1=uppercase, 2= lowercase, 3= uppercase untuk huruf pertama tiap kata dan 4=uppercase untuk huruf pertama saja. Defaultnya 4.

Contoh:
Gunakan form berikut untuk mencoba fungsi tersebut.

Bilangan:

36 Responses to “Fungsi Terbilang”

Hank - Gravatar

Hank said on September 15, 2005, 8:46 pm:

Ini ambil dari PCplus yach?

maseko - Gravatar

maseko said on September 16, 2005, 5:16 pm:

Waduuh.. PC Plus-nya aja gak langganan. Coba cek aja.. kalo sama, aku berani hapus halaman ini.
Aku dapet algoritma-nya dari temen, trus aku cobain di PHP..

linoxs - Gravatar

linoxs said on September 20, 2005, 5:26 pm:

Weh…keren yah…tapi kok gak bisa “nyebut” angka dibelakang koma yah?

maseko - Gravatar

maseko said on September 20, 2005, 8:09 pm:

Sebenarnya kemarin mau ditambah tapi masih belum pasti, enaknya menyebutnya bagaimana.. apakah secara resmi misalnya 1,25 dibaca “satu dua puluh lima per seratus” apakah secara kebanyakan “satu koma dua puluh lima”. Ada saran?

Rony Syahputra N - Gravatar

Rony Syahputra N said on September 23, 2005, 5:29 pm:

wah bagus nih….maseko orang bandung apa jepang…..hehehe…..eh ajarin gw php yah……tq

maseko - Gravatar

maseko said on September 23, 2005, 7:54 pm:

#5 Mari kita belajar sama-sama

Rony Syahputra N - Gravatar

Rony Syahputra N said on September 27, 2005, 8:48 am:

wah makasih nih atas respon nya……sekalian aja saya mau tanya nih…rencana saya mau buat aplikasi surat-menyurat yang ada di kantor saya (dengan menggunakan metoda paperless dengan php)…mungkin sekilas mirip aplikasi email….( saya pernah sih liat CMS XOOPS, mirip seperti itu yang ada di XOOPS)…

Kira2 bisa kasih saya link referensi atas “maseko” bisa membimbing saya……hehehhe

terima kasih sebelumnya.

Regards,

Alc - Gravatar

Alc said on March 31, 2006, 5:31 pm:

How Bout this :

“nol”,
1 => “satu”,
2 => “dua”,
3 => “tiga”,
4 => “empat”,
5 => “lima”,
6 => “enam”,
7 => “tujuh”,
8 => “delapan”,
9 => “sembilan”);
$orders = array(
0 => “”,
1 => “puluh”,
2 => “ratus”,
3 => “ribu”,
6 => “juta”,
9 => “miliar”,
12 => “triliun”,
15 => “kuadriliun”);

////////////////////////////////////////////////// TAMBAHAN BAYU OPIX ////////////////////////////////
$pjgnum = strlen(trim($num));
$pjgnum = $pjgnum - 1;
//////////////////////////////////////////////////////////////////////////////////////////////////////
$is_neg = $num 0 ? ” “.$digits[$s] : “”);
}

/////////////////////////////////////////////////// TAMBAHAN BAYU TUPIC ///////////////////////////////////
if($mult==$pjgnum && $s==1){
$g=”satu”;
$wint = ($g ? $g.($g==”satu ” ? “”:” “).$orders[$mult]:”").($wint ? ” $wint”:”");
}
else{
$wint = ($g ? $g.($g==”se” ? “”:” “).$orders[$mult]:”").($wint ? ” $wint”:”");
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////

// gabungkan dengan hasil sebelumnya
//$wint = ($g ? $g.($g==”se” ? “”:” “).$orders[$mult]:”").
//($wint ? ” $wint”:”");

// pangkas ribuan/jutaan/dsb yang sudah dikonversi
$int = preg_replace(’/\d{1,3}$/’, ”, $int);
$mult+=3;
}
if (!$wint) $wint = $digits[0];

//// angka di kanan desimal

$frac = “”; if (preg_match(”/\.(\d+)/”, $num, $m)) $frac = $m[1];
$wfrac = “”;
for ($i=0; $i

Radix - Gravatar

Radix said on July 6, 2006, 1:41 pm:

untuk penyebutan koma sebaiknya sebut saja angkanya exp ” satu koma dua lima” etc. programnya jadi lebih sederhana tinggal konversi angka ke index array $angka

david - Gravatar

david said on July 8, 2006, 11:31 am:

Pak, mau tanya ni gimana caranya penggunaan terbilang pada saat proses penyimpanan data.
Sbg contoh ni :
aku mau cetak faktur pada saat cetak $terbilang dapat disimpan pada field terbilang.

Sebelum dan sesudahnya saya ucapkan terima kasih.
Salam Kenal.

Selly R - Gravatar

Selly R said on August 24, 2006, 2:07 pm:

Duh kebetulan, saya mahasiswa teknik informatika lagi TA trus rencana nya saya mo biki TA dengan judul “Konversi angka ke huruf dengan menggunakan metode scaner parser” bisa ga minta bimbingan nya?? Terimakasih

agul - Gravatar

agul said on August 31, 2006, 11:27 pm:

Biar lengkap, tambahkan penyebutan angka dibelakang koma.
Misalnya:
delapan puluh delapan koma tiga sembilan tujuh

Menurut aturan Bahasa Indonesia, penyebutan angka di belakang koma hanya menyebut angka-angka saja tanpa tambahan puluh, ribu, ratus, dst.

idris - Gravatar

idris said on September 29, 2006, 8:10 am:

kurang menarik dari sisi programnya,kenapa tidak buat program permainan

R. Rustam Affandi - Gravatar

R. Rustam Affandi said on January 30, 2007, 8:26 am:

Mas bisa tidak fungsi ini menjadi seperti contoh ini :
25,50 terbaca : dua puluh lima koma lima nol, dan fungsi inh digunakan untuk membaca tabel excel.
makasih sebelumnya

amri - Gravatar

amri said on March 17, 2007, 4:04 pm:

source code php yang lengkap untuk terbilang dengan koma ada tidak?

maseko - Gravatar

maseko said on March 17, 2007, 5:23 pm:

Belum ada.

sat - Gravatar

sat said on March 22, 2007, 4:12 pm:

Lima ratus enam puluh delapan trilyun lima ratus empat puluh dua milyar seratus delapan puluh tiga juta tiga ratus lima puluh dua ribu seratus empat puluh lima

yanuar - Gravatar

yanuar said on March 23, 2007, 4:39 pm:

wow kodenya bagus, tetapi kode untuk ms excel ada tidak? saya perlu itu kalo bisa. mohon balasannya. terima kasih.

maseko - Gravatar

maseko said on March 26, 2007, 8:46 am:

Untuk excel bisa dilihat di sini.

akayla - Gravatar

akayla said on May 12, 2007, 1:04 pm:

saya wong anyar.
kalo mau buat format bilangan di PHP gimana yach misal 100000 dibaca jadi 100.000,00

maseko - Gravatar

maseko said on May 14, 2007, 11:35 am:

#20

$bilangan = 100000;
echo number_format($bilangan, 2, ',', '.');

taufik - Gravatar

taufik said on May 17, 2007, 2:23 pm:

terima kasih banyak atas source codenya .:D banyak membantu

mamat - Gravatar

mamat said on June 14, 2007, 3:25 pm:

“maseko”, saya sdh coba script diatas, hasilnya browser kosonng. selain script diatas ditambah apa lagi maseko?
terimakasih..
(pemula)

Iqbal - Gravatar

Iqbal said on July 20, 2007, 12:55 pm:

untuk mamat..diatas itu hanya deklarasi fungsi saja,memakainya harus ada inputan dari user(yah semacam begitulah he3x)..untuk maseko,makasi ya?ini sangat membantu dalam pekerjaan saya!

chalist - Gravatar

chalist said on August 1, 2007, 12:58 pm:

maseko, bisa ndak minta bantu dibuatin macro pada excel untuk mengurubah angka nilai menjadi huruf (seperti pada nilai ujian nasional) ex. 4,40 empat koma empat nol atau 15,87 lima belas koma delapan tujuh

Robert Lozyniak - Gravatar

Robert Lozyniak said on August 9, 2007, 12:34 pm:

Sorry about the bad formatting. Let me try again:

–deleted–

Robert Lozyniak - Gravatar

Robert Lozyniak said on August 9, 2007, 12:36 pm:

Also you can replace “lapan” with “delapan”: this also only occurs once.

Robert Lozyniak - Gravatar

Robert Lozyniak said on August 9, 2007, 12:54 pm:

This message board is introducing errors in my code! Let me try again:

Please ignore the code I posted above and use only this.

(Note: these are MS Excel macros, which Chalist asked for.)

Function malaydigit(ByVal d As Integer)
If 0 > d Or d > 9 Then malaydigit = "[invalid digit]“: Exit Function
If d = 0 Then dn$ = “kosong”
If d = 1 Then dn$ = “satu”
If d = 2 Then dn$ = “dua”
If d = 3 Then dn$ = “tiga”
If d = 4 Then dn$ = “empat”
If d = 5 Then dn$ = “lima”
If d = 6 Then dn$ = “enam”
If d = 7 Then dn$ = “tujuh”
If d = 8 Then dn$ = “lapan”
If d = 9 Then dn$ = “sembilan”
malaydigit = dn$
End Function

Function malaysmallnum(ByVal d As Integer)
Dim dd As Integer
Dim h As Integer
s$ = “”
If 0 > d Or d > 999 Then s$ = “[invalid input to malaysmallnum]“: Exit Function
If d = 0 Then
s$ = malaydigit(0)
Else
dd = d Mod 100
If dd >= 1 And 10 > dd Then s$ = malaydigit(dd)
If dd = 10 Then s$ = “sepuluh”
If dd = 11 Then s$ = “sebelas”
If dd > 11 And 20 > dd Then s$ = malaydigit(dd - 10) + ” belas”
If dd >= 20 Then
s$ = malaydigit(dd \ 10) + ” puluh”
If dd Mod 10 > 0 Then s$ = s$ + ” ” + malaydigit(dd Mod 10)
End If
h = d \ 100
If dd > 0 And h > 0 Then s$ = ” ” + s$
If h = 1 Then s$ = “seratus” + s$
If h > 1 Then s$ = malaydigit(h) + ” ratus” + s$
End If
malaysmallnum = s$
End Function

Function malayfix(ByVal NumberToFormat As Double, ByVal DecimalPlaces As Integer)
Dim ddd As Integer
Dim w1 As Double
Dim d As Integer
Dim w2 As Long
Dim w As Double
Dim c As Long
Dim dp As Integer
Dim i As Integer
Dim w1t As Double
s1$ = “”: s2$ = “”
dp = DecimalPlaces
If 0 > dp Or dp > 9 Then
malayfix = “[invalid number of decimal places]”
Exit Function
End If
w = NumberToFormat
If 0 > w Then s0$ = “minus ” Else s0$ = “”
w = Abs(w)
w1 = Int(w)
c = 10 ^ dp
w2 = (w - w1) * c
If w2 >= c Then w2 = 0: w1 = w1 + 1
If w2 = 0 And w1 = 0 Then s0$ = “”
For i = 1 To dp
s2$ = ” ” + malaydigit(w2 Mod 10) + s2$
w2 = w2 \ 10
Next
If dp >= 1 Then s2$ = ” koma” + s2$
If w1 = 0 Then
s1$ = malaydigit(0)
Else
i = 0
Do Until w1 = 0
w1t = Int(w1 / 1000)
ddd = w1 - (w1t * 1000)
If ddd > 999 Then ddd = 0: w1t = w1t + 1
w1 = w1t
If i = 0 And ddd > 0 Then s1$ = malaysmallnum(ddd)
If i = 1 And ddd = 1 Then s1$ = “seribu” + s1$
If i = 1 And ddd > 1 Then s1$ = malaysmallnum(ddd) + ” ribu” + s1$
If i = 2 And ddd > 0 Then s1$ = malaysmallnum(ddd) + ” juta” + s1$
If i = 3 And ddd > 0 Then s1$ = malaysmallnum(ddd) + ” milyar” + s1$
If i = 4 And ddd > 0 Then s1$ = malaysmallnum(ddd) + ” trilyun” + s1$
If i = 5 And ddd > 0 Then s1$ = malaysmallnum(ddd) + ” kwadrilyun” + s1$
If i > 5 Then malayfix = “[Input to malayfix is out of range]“: Exit Function
If w1 > 0 And Len(s1$) > 0 And Not (Left$(s1$, 1) = ” “) Then s1$ = ” ” + s1$
i = i + 1
Loop
End If
malayfix = s0$ + s1$ + s2$
End Function

Enjoy, Chalist!

lana - Gravatar

lana said on September 18, 2007, 5:43 pm:

nice function… thank’s mas buat sourcenya :)

budi - Gravatar

budi said on September 27, 2007, 9:45 am:

Makasih nih sangat membantu banget

Free book download - Gravatar

Free book download said on January 5, 2008, 4:16 am:

thanks ! very useful

Andre - Gravatar

Andre said on January 16, 2008, 3:42 pm:

Nanya dong
Kalau yang ditranslate berupa datetime, gimana cara konversinya?
Misalnya gini :
16/01/08
Pingin ditranslate menjadi : Enam belas Januari dua ribu delapan. Gimana caranya mohon pencerahannya…

Pemula

Fitra - Gravatar

Fitra said on February 28, 2008, 9:26 am:

Waduh.. makasih banget maseko fungsi terbilangnya. saya benar-benar terbantu. salam kenal.

asmar - Gravatar

asmar said on March 29, 2008, 7:50 pm:

mas mohon bantuannya untuk fungsi terbilang menggunakan program lotus 123r5w…..

Romi - Gravatar

Romi said on March 31, 2008, 11:35 am:

mas mo nanya kalo misalnya fungsi terbilang dibuat dalam bentuk cuurrency USD,
seperti apa yah?
mungkin ada yang tau..
thx.

adjay - Gravatar

adjay said on May 25, 2008, 4:19 pm:

mas eko tolong dirinci gimana caranya masukin fungsi terbilang, sorry ya mas saya ga mudeng wong awam gaptek, terima kasih

Leave A Comment

All fields marked with "*" are required.