none
C# convert number into character

All replies

  • Hi harshad,

                   Here is code for converting number to words.

    using System;
    namespace WpfApplication1
    {
     public class NumberToEnglish
      {
       public String changeNumericToWords(double numb)
       {
        String num = numb.ToString();
        return changeToWords(num, false);
       }
       public String changeCurrencyToWords(String numb)
       {
        return changeToWords(numb, true);
       }
       public String changeNumericToWords(String numb)
       {
        return changeToWords(numb, false);
       }
       public String changeCurrencyToWords(double numb)
       {
        return changeToWords(numb.ToString(), true);
       }
       private String changeToWords(String numb, bool isCurrency)
       {
       String val = "", wholeNo = numb, points = "", andStr = "", pointStr="";
       String endStr = (isCurrency) ? ("Only") : ("");
       try
       {
        int decimalPlace = numb.IndexOf(".");
        if (decimalPlace > 0)
        {
         wholeNo = numb.Substring(0, decimalPlace);
         points = numb.Substring(decimalPlace+1);
         if (Convert.ToInt32(points) > 0)
         {
          andStr = (isCurrency)?("and"):("point");// just to separate whole numbers from points/cents
          endStr = (isCurrency) ? ("Cents "+endStr) : ("");
          pointStr = translateCents(points);
         }
        }
        val = String.Format("{0} {1}{2} {3}",translateWholeNumber(wholeNo).Trim(),andStr,pointStr,endStr);
       }
       catch { ;}
       return val;
      }
       private String translateWholeNumber(String number)
       {
        string word = "";
        try
        {
         bool beginsZero = false;//tests for 0XX
         bool isDone = false;//test if already translated
         double dblAmt = (Convert.ToDouble(number));
         //if ((dblAmt > 0) && number.StartsWith("0"))
         if (dblAmt > 0)
         {//test for zero or digit zero in a nuemric
          beginsZero = number.StartsWith("0");
    
          int numDigits = number.Length;
          int pos = 0;//store digit grouping
          String place = "";//digit grouping name:hundres,thousand,etc...
          switch (numDigits)
          {
           case 1://ones' range
            word = ones(number);
            isDone = true;
            break;
           case 2://tens' range
            word = tens(number);
            isDone = true;
            break;
           case 3://hundreds' range
            pos = (numDigits % 3) + 1;
            place = " Hundred ";
            break;
           case 4://thousands' range
           case 5:
           case 6:
            pos = (numDigits % 4) + 1;
            place = " Thousand ";
            break;
           case 7://millions' range
           case 8:
           case 9:
            pos = (numDigits % 7) + 1;
            place = " Million ";
            break;
           case 10://Billions's range
            pos = (numDigits % 10) + 1;
            place = " Billion ";
            break;
           //add extra case options for anything above Billion...
           default:
            isDone = true;
            break;
          }
          if (!isDone)
          {//if transalation is not done, continue...(Recursion comes in now!!)
           word = translateWholeNumber(number.Substring(0, pos)) + place + translateWholeNumber(number.Substring(pos));
           //check for trailing zeros
           if (beginsZero) word = " and " + word.Trim();
          }
          //ignore digit grouping names
          if (word.Trim().Equals(place.Trim())) word = "";
         }
        }
        catch { ;}
        return word.Trim();
       }
       private String tens(String digit)
       {
        int digt = Convert.ToInt32(digit);
        String name = null;
        switch (digt)
        {
         case 10:
          name = "Ten";
          break;
         case 11:
          name = "Eleven";
          break;
         case 12:
          name = "Twelve";
          break;
         case 13:
          name = "Thirteen";
          break;
         case 14:
          name = "Fourteen";
          break;
         case 15:
          name = "Fifteen";
          break;
         case 16:
          name = "Sixteen";
          break;
         case 17:
          name = "Seventeen";
          break;
         case 18:
          name = "Eighteen";
          break;
         case 19:
          name = "Nineteen";
          break;
         case 20:
          name = "Twenty";
          break;
         case 30:
          name = "Thirty";
          break;
         case 40:
          name = "Fourty";
          break;
         case 50:
          name = "Fifty";
          break;
         case 60:
          name = "Sixty";
          break;
         case 70:
          name = "Seventy";
          break;
         case 80:
          name = "Eighty";
          break;
         case 90:
          name = "Ninety";
          break;
         default:
          if (digt > 0)
          {
           name = tens(digit.Substring(0, 1) + "0") + " " + ones(digit.Substring(1));
          }
          break;
        }
        return name;
       }
       private String ones(String digit)
       {
        int digt = Convert.ToInt32(digit);
        String name = "";
        switch (digt)
        {
         case 1:
          name = "One";
          break;
         case 2:
          name = "Two";
          break;
         case 3:
          name = "Three";
          break;
         case 4:
          name = "Four";
          break;
         case 5:
          name = "Five";
          break;
         case 6:
          name = "Six";
          break;
         case 7:
          name = "Seven";
          break;
         case 8:
          name = "Eight";
          break;
         case 9:
          name = "Nine";
          break;
        }
        return name;
       }
       private String translateCents(String cents)
       {
        String cts = "", digit = "", engOne = "";
         for (int i = 0; i < cents.Length; i++)
         {
          digit = cents[i].ToString();
          if (digit.Equals("0"))
          {
           engOne = "Zero";
          }
          else
          {
           engOne = ones(digit);
          }
          cts += " " + engOne;
         }
        return cts;
       }
      }
     }


    create a class file in your project, copy this code to your class file. Change the namespace to your project namespace.

    create obj of that class something like this

    NumberToEnglish objnumber = new NumberToEnglish();

    and with objnumber.changeNumericToWords(100);

    with that function you will get number into word.

    Regards

    Hiran Repakula.
    Saturday, January 16, 2010 9:09 AM
  • Thanks Hiran to give me your response

    Friday, January 22, 2010 2:35 PM
  • You can see the routine I wrote to do this at http://www.blackbeltcoder.com/Articles/strings/converting-numbers-to-words
    Jonathan Wood • Black Belt Coder
    Wednesday, December 29, 2010 6:31 AM
  • Hi Hiran,

    This is very helpful to the project I have in school now. But can you please let me know how to do this "

    create a class file in your project, copy this code to your class file. Change the namespace to your project namespace.
    create obj of that class something like this
    NumberToEnglish objnumber = new NumberToEnglish();
    and with objnumber.changeNumericToWords(100);

    with that function you will get number into word."

    I know it sounds stupid but I'm new to this language. I really don't understand it.

    Thank you Very much!

    Thursday, August 30, 2012 10:48 PM