Sayıyı yazıya dönüştürme
123 => yüzyirmiüç olarak yazdırma :)
Verilen bir sayıyı, yazı olarak yazdırma işini yapan bir metod yazayım dedim:
static string SayiToYazi(string sayi)
{
int max_basamak = 30;
string[] birler = { "", "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", "dokuz" };
string[] onlar = { "", "on", "yirmi", "otuz", "kırk", "elli", "altmış", "yetmiş", "seksen", "doksan" };
// daha büyük sayılar için: http://dalt.in/Kf49Z
string[] binler = { "oktilyon", "septilyon", "seksilyon", "kentilyon", "katrilyon", "trilyon", "milyar", "milyon", "bin", "" };
int[] basamaklar = new int[3];
string sonuc = "";
//sayının kullanılmayan basamaklarını sıfırla doldur
sayi = sayi.PadLeft(max_basamak, '0');
//sayıyı üçerli basamaklara ayır
for (int i = 0; i < max_basamak / 3; i++)
{
string temp = "";
//yüzler basamağı
basamaklar[0] = (int)(sayi[i * 3] - '0');
//onlar basamağı
basamaklar[1] = (int)(sayi[i * 3 + 1] - '0');
//birler basamağı
basamaklar[2] = (int)(sayi[i * 3 + 2] - '0');
if (basamaklar[0] == 0)
temp = ""; //yüzler basamağı boş
else
if (basamaklar[0] == 1)
temp = "yüz"; //yüzler basamağında 1 varsa
else
temp = birler[basamaklar[0]] + "yüz"; // birleştir
//yüzler+onlar+birler basamağını birleştir
temp += onlar[basamaklar[1]] + birler[basamaklar[2]];
//basamak değeri oluşmadıysa yani 000 ise binler basamağını ekle
if (!string.IsNullOrEmpty(temp)) temp += binler[i];
//birbin olmaz
if ((i > 1) && (temp.Equals("birbin"))) temp = "bin";
if (temp != "") sonuc += temp + " ";
}
if (string.IsNullOrEmpty(sonuc.Trim()))
sonuc = "sıfır";
return sonuc.Trim();
}
static string SayiToYazi(int sayi)
{
return SayiToYazi(sayi.ToString());
}
static void Main(string[] args)
{
Console.WriteLine(SayiToYazi("1234567890"));
Console.ReadKey();
}
Sonuç:

İşi daha da abartıp daha büyük bir sayı yazalım:
static void Main(string[] args)
{
Console.WriteLine(SayiToYazi("123456789012345678901234567890"));
Console.ReadKey();
}
Çıktı:

Bu method 30 basamağa kadar olan sayıları yazdırabiliyor.
Daha büyük sayılar için http://dalt.in/Kf49Z adresine göz atabilirsiniz.
Ayrıca dileyenler bu metodu, genişletme metodu olarak da değiştirebilir ve daha kolay bir şekilde kullanabilirler.
Class dosyasını indirmek için buraya tıklayınız.
#sayı #yazı #convert #basamak #büyük-sayılar