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