public class NumberToString
  {  
    private static string[] yakan = new string[10] { "صفر", "يک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه" };  
    private static string[] dahgan = new string[10] { "", "", "بيست", "سي", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود" };  
    private static string[] dahyek = new string[10] { "ده", "يازده", "دوازده", "سيزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده" };    
    private static string[] sadgan = new string[10] { "", "يکصد", "دوصد", "سيصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد" };  
    private static string[] basex = new string[5] { "", "هزار", "ميليون", "ميليارد", "تريليون" };  
   
   
    private static string getnum3(int num3)  
    {  
      string s = "";  
      int d3, d12;  
      d12 = num3 % 100;  
      d3 = num3 / 100;  
      if (d3 != 0)  
        s = sadgan[d3] + " و ";  
      if ((d12 >= 10) && (d12 <= 19))  
      {  
        s = s + dahyek[d12 - 10];  
      }  
      else  
      {  
        int d2 = d12 / 10;  
        if (d2 != 0)  
          s = s + dahgan[d2] + " و ";  
        int d1 = d12 % 10;  
        if (d1 != 0)  
          s = s + yakan[d1] + " و ";  
        s = s.Substring(0, s.Length - 3);  
      };  
      return s;  
    }  
   
    public string num2str(string snum)  
    {  
      string stotal = "";  
      if (snum == "0")  
      {  
        return yakan[0];  
      }  
      else  
      {  
        snum = snum.PadLeft(((snum.Length - 1) / 3 + 1) * 3, '0');  
        int L = snum.Length / 3 - 1;  
        for (int i = 0; i <= L; i++)  
        {  
          int b = int.Parse(snum.Substring(i * 3, 3));  
          if (b != 0)  
            stotal = stotal + getnum3(b) + " " + basex[L - i] + " و ";  
        }  
        stotal = stotal.Substring(0, stotal.Length - 3);  
      }  
      return stotal;  
    }
 
}