hi,
can any one tell me how to i convert amount(in digitts) to word.
thanks in advance

Recommended Answers

All 10 Replies

hi,
can any one tell me how to i convert amount(in digitts) to word.
thanks in advance

You can try the following code:

public  string NumberToText(int number) 
{ 
if (number == 0) return "Zero"; 
if (number == -2147483648) return "Minus Two Hundred and Fourteen Crore Seventy Four Lakh Eighty Three Thousand Six Hundred and Forty Eight"; 
int[] num = new int[4]; 
int first = 0; 
int u, h, t; 
System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
if (number < 0) 
{ 
sb.Append("Minus "); 
number = -number; 
} 
string[] words0 = {"" ,"One ", "Two ", "Three ", "Four ", 
"Five " ,"Six ", "Seven ", "Eight ", "Nine "}; 
string[] words1 = {"Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", 
"Fifteen ","Sixteen ","Seventeen ","Eighteen ", "Nineteen "}; 
string[] words2 = {"Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", 
"Seventy ","Eighty ", "Ninety "}; 
string[] words3 = {"Thousand ", "Lakh ","Crore "}; 
num[0] = number % 1000; // units 
num[1] = number / 1000; 
num[2] = number / 100000; 
num[1] = num[1] - 100 * num[2]; // thousands 
num[3] = number / 10000000; // crores 
num[2] = num[2] - 100 * num[3]; // lakhs 
for(int i = 3; i > 0 ; i--) 
{ 
if (num[i] != 0) 
{ 
first = i; 
break; 
} 
} 
for(int i = first ; i >= 0 ; i--) 
{ 
if (num[i] == 0) continue; 
u = num[i] % 10; // ones 
t = num[i] / 10; 
h = num[i] / 100; // hundreds 
t = t - 10 * h; // tens 
if (h > 0) sb.Append(words0[h] + "Hundred "); 
if (u > 0 || t > 0) 
{ 
if (h > 0 || i == 0) sb.Append("and "); 
if (t == 0) 
sb.Append(words0[u]); 
else if (t == 1) 
sb.Append(words1[u]); 
else 
sb.Append(words2[t-2] + words0[u]); 
} 
if (i != 0) sb.Append(words3[i-1]); 
} 
return sb.ToString().TrimEnd(); 
}

If it helps,then mark this thread as solved

try this code

public  string NumberToText(int number) 
{ 
if (number == 0) return "Zero"; 
if (number == -2147483648) return "Minus Two Hundred and Fourteen Crore Seventy Four Lakh Eighty Three Thousand Six Hundred and Forty Eight"; 
int[] num = new int[4]; 
int first = 0; 
int u, h, t; 
System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
if (number < 0) 
{ 
sb.Append("Minus "); 
number = -number; 
} 
string[] words0 = {"" ,"One ", "Two ", "Three ", "Four ", 
"Five " ,"Six ", "Seven ", "Eight ", "Nine "}; 
string[] words1 = {"Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", 
"Fifteen ","Sixteen ","Seventeen ","Eighteen ", "Nineteen "}; 
string[] words2 = {"Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", 
"Seventy ","Eighty ", "Ninety "}; 
string[] words3 = {"Thousand ", "Lakh ","Crore "}; 
num[0] = number % 1000; // units 
num[1] = number / 1000; 
num[2] = number / 100000; 
num[1] = num[1] - 100 * num[2]; // thousands 
num[3] = number / 10000000; // crores 
num[2] = num[2] - 100 * num[3]; // lakhs 
for(int i = 3; i > 0 ; i--) 
{ 
if (num[i] != 0) 
{ 
first = i; 
break; 
} 
} 
for(int i = first ; i >= 0 ; i--) 
{ 
if (num[i] == 0) continue; 
u = num[i] % 10; // ones 
t = num[i] / 10; 
h = num[i] / 100; // hundreds 
t = t - 10 * h; // tens 
if (h > 0) sb.Append(words0[h] + "Hundred "); 
if (u > 0 || t > 0) 
{ 
if (h > 0 || i == 0) sb.Append("and "); 
if (t == 0) 
sb.Append(words0[u]); 
else if (t == 1) 
sb.Append(words1[u]); 
else 
sb.Append(words2[t-2] + words0[u]); 
} 
if (i != 0) sb.Append(words3[i-1]); 
} 
return sb.ToString().TrimEnd(); 
}
commented: I'm glad to see you have mastered copy/paste! Time to master C# now! -1

bk_bhupendra ,I think you must make your efforts .Copying others code and pasting is wrong..............

Although the layout could be better, this should do the trick.

sry....
bt i thought it wil help u...
i tested it n thn i sent dis...

hi,
can any one tell me how to i convert amount(in digitts) to word.
thanks in advance

using the code which vinnijain is given you, you can also try modifying the same for millions and billions also.............:)

You could store all the numeric semantics in a dictionary and then recursively call a translator method (as needed) that whittles it down from most significant to least signicant digits... For example:

Dictionary<uint, string> lookupWord = new Dictionary<uint, string>();

        public void Init()
        {
            lookupWord.Add(0, "siro");
            lookupWord.Add(1, "uno");
            lookupWord.Add(2, "dos");
            lookupWord.Add(3, "tres");
            lookupWord.Add(4, "kwatro");
   ...

            lookupWord.Add(800, "otsosyentos");
            lookupWord.Add(900, "nobesyentos");
            lookupWord.Add(1000, "un mil");
            lookupWord.Add(1000000, "un milyon");
            lookupWord.Add(1000000000, "un bilyon");
        }

        private string ConvertNumToText(uint n)
        {
            if (
                  (n < 20) ||
                  (n < 100 && (n % 10 == 0)) ||
                  (n < 1000 && n % 100 == 0) ||
                  (n == 1000) ||
                  (n == 1000000) ||
                  (n == 1000000000)
               )
            {
                return lookupWord[n];
            }
            else if (n < 100)
            {
                uint tens = n / 10;
                uint ones = n % 10;

                if (tens != 2)
                    return lookupWord[10 * tens] + "-i-" + lookupWord[ones];
                else
                    return lookupWord[10 * tens] + "-" + lookupWord[ones];
            }
    ...

            else if (n < 2000000000)
                return "un bilyon " + ConvertNumToText(n - 1000000000);
            else
            {
                uint billions = n / 1000000000;

                if (n % 1000000000 != 0)
                    return ConvertNumToText(billions) + " bilyon " + ConvertNumToText(n - 1000000000 * billions);
                else
                    return ConvertNumToText(billions) + " bilyon";
            }
        }

The above sample demonstrates working with the Cebuano language, but you can easily see the logic in making the proper interpretation to form a grammatical representation of a number.

hi,
can any one tell me how to i convert amount(in digitts) to word.
thanks in advance

Well Kool.net.......
Kindly mark this thread as solved if your problem is solved now..........:)

hey,
how to i store value of sb in text box return from the function

bk_bhupendra , the code is fine but for single digit or two digits it is showing the word "and" before the converted text. Please try to work on this.

Ramesh Kumar

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.