TurkishDecimalFormat

Alışverişlerde faturaların altına tutarın nasıl yazılıdıgını merak edenler için, ufak bir java uygulaması

package bill;

class TurkishDecimalFormat {
private static final String[] majorNames = { “”, ” bin”, ” milyon”,
” milyar”, ” tirilyon”, ” katrilyon”, ” katrilyar” };

private static final String[] tensNames = { “”, ” on”, ” yirmi”, ” otuz”,
” kırk”, ” elli”, ” altmış”, ” yetmiş”, ” seksen”, ” doksan” };

private static final String[] numNames = { “”, ” bir”, ” iki”, ” üç”,
” dört”, ” beş”, ” altı”, ” yedi”, ” sekiz”, ” dokuz”, ” on”,
” onbir”, ” oniki”, ” onüç”, ” ondört”, ” onbeş”, ” onaltı”,
” onyedi”, ” onsekiz”, ” ondokuz” };

private String convertLessThanOneThousand(int number) {
String soFar;

if (number % 100 < 20) {
soFar = numNames[number % 100];
number /= 100;
} else {
soFar = numNames[number % 10];
number /= 10;

soFar = tensNames[number % 10] + soFar;
number /= 10;
}
if (number == 0)
return soFar;
if (number != 1)
return numNames[number] + ” yüz” + soFar;
else
return ” yüz” + soFar;
}

public String convert(int number) {

/* special case */
if (number == 0) {
return “sıfır”;
}

if (number == 1) {
return convertLessThanOneThousand(number);
}
String prefix = “”;

if (number < 0) {
number = -number;
prefix = “negatif”;
}

String soFar = “”;
int place = 0;

do {
int n = number % 1000;

if (n != 0) {

String s = “”;

if ((place != 1) && (n != 1))
s = convertLessThanOneThousand(n);

soFar = s + majorNames[place] + soFar;
}
place++;
number /= 1000;

} while (number > 0);

return (prefix + soFar).trim();
}

public static void main(String[] args) {
TurkishDecimalFormat f = new TurkishDecimalFormat();
System.out.println(“*** ” + f.convert(0));
System.out.println(“*** ” + f.convert(1));
System.out.println(“*** ” + f.convert(16));
System.out.println(“*** ” + f.convert(100));
System.out.println(“*** ” + f.convert(118));
System.out.println(“*** ” + f.convert(200));
System.out.println(“*** ” + f.convert(219));
System.out.println(“*** ” + f.convert(800));
System.out.println(“*** ” + f.convert(801));
System.out.println(“*** ” + f.convert(1316));
System.out.println(“*** ” + f.convert(1000000));
System.out.println(“*** ” + f.convert(2000000));
System.out.println(“*** ” + f.convert(3000200));
System.out.println(“*** ” + f.convert(700000));
System.out.println(“*** ” + f.convert(9000000));
System.out.println(“*** ” + f.convert(123456789));
System.out.println(“*** ” + f.convert(-45));

}
}

Çıktısı;

*** sıfır
*** bir
*** onaltı
*** yüz
*** yüz onsekiz
*** iki yüz
*** iki yüz ondokuz
*** sekiz yüz
*** sekiz yüz bir
*** bin üç yüz onaltı
*** milyon
*** iki milyon
*** üç milyon iki yüz
*** bin
*** dokuz milyon
*** yüz yirmi üç milyon bin yedi yüz seksen dokuz
*** negatif kırk beş