C#

C# ile Sayıları Yazıya Çevirmek

Aşağıdaki yer alan iki fonksiyon sayıları yazı ile göstermemizi sağlıyor.

“NumberToText” fonksiyonu “long” tipindeki sayıları yazı ile belirtecek string değeri döndürürken “NumberToTextForMoney” ondalıklı bir sayıyı yazı ile göstermek için kullanılabilir.

Örnek olarak;

“NumberToTextForMoney(1500.48);”  “bin beşyüz  TL kırksekiz  Krş” değerini döndürecektir.

“NumberToText(1256);” ise “bin ikiyüzellialtı ” değerini döndürecektir.

 

“NumberToText” ve “NumberToTextForMoney” Fonksiyonları

Fonksiyonlar VB 6 kodundan dönüştürülmüştür. VB 6 kodu olarak ihtiyaç duyan olursa benimle irtibat kurabilir.

public static string NumberToTextForMoney(decimal tmpNumber, string strUnit, string strDecimalUnit)
{
string strDecimalPart = String.Empty;
string strIntegerPart = String.Empty;
string strDecimalsep = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;

if (tmpNumber.ToString().IndexOf(strDecimalsep) > -1)
{
strIntegerPart = tmpNumber.ToString().Substring(0, tmpNumber.ToString().IndexOf(strDecimalsep));
strDecimalPart = tmpNumber.ToString().Substring(tmpNumber.ToString().IndexOf(strDecimalsep) + 1);
}
else{
strIntegerPart = tmpNumber.ToString();
strDecimalPart = “”;
}

if (strDecimalPart != “”)
return NumberToText(long.Parse(strIntegerPart)) + ” ” + strUnit + ” ” + NumberToText(long.Parse(strDecimalPart)) + ” ” + strDecimalUnit;
else
return NumberToText(long.Parse(strIntegerPart)) + ” ” + strUnit;
}

 

public static string NumberToText(long tmpNumber)
{
int LenOfNumber;
int LenMod3;
int MaxAmount = 0;
int i, B;
string Text = string.Empty;
string strNumber;
string[,] Numbers = new string[4, 10];
string[] Steps = new string[5];
string x;
string y;
int lstX;

//Numbers dizisine değerleri ata
Numbers[3, 1] = “bir”;
Numbers[3, 2] = “iki”;
Numbers[3, 3] = “üç”;
Numbers[3, 4] = “dört”;
Numbers[3, 5] = “beş”;
Numbers[3, 6] = “altı”;
Numbers[3, 7] = “yedi”;
Numbers[3, 8] = “sekiz”;
Numbers[3, 9] = “dokuz”;

Numbers[2, 1] = “on”;
Numbers[2, 2] = “yirmi”;
Numbers[2, 3] = “otuz”;
Numbers[2, 4] = “kırk”;
Numbers[2, 5] = “elli”;
Numbers[2, 6] = “altmış”;
Numbers[2, 7] = “yetmiş”;
Numbers[2, 8] = “seksen”;
Numbers[2, 9] = “doksan”;

Numbers[1, 1] = “yüz”;
Numbers[1, 2] = “ikiyüz”;
Numbers[1, 3] = “üçyüz”;
Numbers[1, 4] = “dörtyüz”;
Numbers[1, 5] = “beşyüz”;
Numbers[1, 6] = “altıyüz”;
Numbers[1, 7] = “yediyüz”;
Numbers[1, 8] = “sekizyüz”;
Numbers[1, 9] = “dokuzyüz”;

//Steps dizisine değerleri ata
Steps[0] = “”;
Steps[1] = “bin”;
Steps[2] = “milyon”;
Steps[3] = “milyar”;
Steps[4] = “tirilyon”;

//Sayıyı stringe çevir
strNumber = tmpNumber.ToString();
//Stringin uzunluğunu bul
LenOfNumber = strNumber.Length;
LenMod3 = LenOfNumber % 3;
//İlk basamağı üçe tamamla
if (LenMod3 != 0)
{
for (i = 1; i <= (3 – LenMod3); i++)
{
strNumber = “0” + strNumber;
}
LenOfNumber = LenOfNumber + (3 – LenMod3);
}

if (LenOfNumber >= 1 && LenOfNumber <= 3)
MaxAmount = 0;
else if (LenOfNumber >= 4 && LenOfNumber <= 6)
MaxAmount = 1;
else if (LenOfNumber >= 7 && LenOfNumber <= 9)
MaxAmount = 2;
else if (LenOfNumber >= 10 && LenOfNumber <= 12)
MaxAmount = 3;
else if (LenOfNumber >= 13 && LenOfNumber <= 15)
MaxAmount = 4;

B = 0;

while (MaxAmount >= 0)
{

y = strNumber.Substring(B, 3);
for (i = 0; i < 3; i++)
{
x = y.Substring(i, 1);
if (int.Parse(x) == 0)
Text = Text + “”;
else
{
Text = Text + Numbers[i+1, int.Parse(x)];
lstX = int.Parse(x);
}
}
if (y != “000”)
Text = Text + Steps[MaxAmount] + ” “;

MaxAmount = MaxAmount – 1;
B = B + 3;
}
//texti uygun hale getir
if (Text.StartsWith(“birbin”)) Text = Text.Substring(3);
return Text;
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir