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

## All 10 Replies

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

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.

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()
{
...

}

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.

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.