Programming Resource
Posts tagged terbilang
Fungsi Terbilang
1Berikut adalah conoth fungsi tebilang menggunakan Oracle, cukup simple didalam oracle hanya dengan menggunakan fungsi TO_DATE dengan format Jsp.
FUNCTION terbilang (
v_number IN NUMBER
)
RETURN VARCHAR2
AS
TYPE myArray IS TABLE OF VARCHAR2 (255);
str_array myArray
:= myArray ('',
'thousand ',
' million ',
' billion ',
' trillion ',
' quadrillion ',
' quintillion ',
' sextillion ',
'septillion ',
' octillion ',
' nonillion ',
' decillion ',
' undecillion ',
' duodecillion '
);
str_number VARCHAR2 (50);
l_return VARCHAR2 (4000);
trans1 VARCHAR2 (4000);
trans2 VARCHAR2 (4000);
BEGIN
str_number := TRUNC (ABS (v_number));
FOR i IN 1 .. str_array.COUNT
LOOP
EXIT WHEN str_number IS NULL;
IF (SUBSTR (str_number, LENGTH (str_number) - 2, 3) <> 0)
THEN
trans1 :=
TO_CHAR (TO_DATE (SUBSTR (str_number, LENGTH (str_number) - 2,
3),
'J'
),
'Jsp'
)
|| str_array (i)
|| trans1;
END IF;
str_number := SUBSTR (str_number, 1, LENGTH (str_number) - 3);
END LOOP;
l_return := trans1;
IF TO_CHAR (v_number) LIKE '%.%'
THEN
str_number :=
(ABS (v_number) - TRUNC (ABS (v_number)))
* (TO_NUMBER (RPAD ('1',
(LENGTH ((ABS (v_number) - TRUNC (ABS (v_number))
)
)
),
RPAD ('0', 50, '0')
)
)
);
FOR i IN 1 .. str_array.COUNT
LOOP
EXIT WHEN str_number IS NULL;
IF (SUBSTR (str_number, LENGTH (str_number) - 2, 3) <> 0)
THEN
trans2 :=
TO_CHAR (TO_DATE (SUBSTR (str_number,
LENGTH (str_number) - 2,
3
),
'J'
),
'Jsp'
)
|| str_array (i)
|| trans2;
END IF;
str_number := SUBSTR (str_number, 1, LENGTH (str_number) - 3);
END LOOP;
l_return := trans1 || ' point ' || trans2;
END IF;
RETURN l_return;
END terbilang;
untuk mencobanya
SQL> SELECT TERBILANG(100) as AA FROM DUAL; AA ----------------- One Hundred
Untuk fungsi terbilang dalam bahasa Indonesia
FUNCTION terbilang_indo(v_number IN NUMBER) RETURN VARCHAR2 AS
BEGIN
RETURN REPLACE(REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE(REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE(REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE(REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE(REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE(REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE(REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE(REPLACE( REPLACE( REPLACE( REPLACE(
REPLACE(REPLACE( REPLACE( REPLACE(
LOWER( TERBILANG(v_number))
, 'trillion' , 'Trilyun')
, 'billion' , 'Milyar')
, 'million' , 'Juta')
, 'onethousand' , 'Seribu')
, 'thousand' , 'Ribu')
, 'nine hundred' , 'Sembilan Ratus')
, 'eigth hundred' , 'Delapan Ratus')
, 'seven hundred' , 'Tujuh Ratus')
, 'six hundred' , 'Enam Ratus')
, 'five hundred' , 'Lima Ratus')
, 'four hundred' , 'Empat Ratus')
, 'three hundred' , 'Tiga Ratus')
, 'two hundred' , 'Dua Ratus')
, 'one hundred' , 'Seratus')
, 'hundred' , 'Ratus')
, 'ninety' , 'Sembilan Puluh')
, 'eighty' , 'Delapan Puluh')
, 'seventy' , 'Tujuh Puluh')
, 'sixty' , 'Enam Puluh')
, 'fifty' , 'Lima Puluh')
, 'forty' , 'Empat Puluh')
, 'thirty' , 'Tiga Puluh')
, 'twenty' , 'Dua Puluh')
, 'nineteen' , 'Sembilanbelas')
, 'eighteen' , 'Delapanbelas')
, 'seventeen' , 'Tujuhbelas')
, 'sixteen' , 'Enambelas')
, 'fifteen' , 'Limabelas')
, 'fourteen' , 'Empatbelas')
, 'thirteen' , 'Tigabelas')
, 'twelve' , 'Duabelas')
, 'eleven' , 'Sebelas')
, 'ten' , 'Sepuluh')
, 'nine' , 'Sembilan')
, 'eight' , 'Delapan')
, 'seven' , 'Tujuh')
, 'six' , 'Enam')
, 'five' , 'Lima')
, 'four' , 'Empat')
, 'three' , 'Tiga')
, 'two' , 'Dua')
, 'one' , 'Satu')
, 'point' , 'koma')
, '','');
END terbilang_indo;
untuk mencobanya
SQL> SELECT TERBILANG_INDO(100) as AA FROM DUAL; AA ----------------- Seratus