• Now Online : 37

Introduction

This article is about wow to convert any number or currency into words. You can convert any number into words using C#.NET. The below code also allow you to convert the number to the exact Dollars and Cents. In this article class file shown is used to define the methods for converting numbers or currency into Words.

```public String changeCurrencyToWords(double numb, bool isCurrency, string currencyName,string currencyPoints)
{
return changeToWords(numb.ToString(), isCurrency, currencyName,currencyPoints);
}
private String changeToWords(String numb, bool isCurrency, string currencyName, string currencyPoints)
{
String val = "", wholeNo = numb, dPoints = "", andStr = "", pointStr = "";
String endStr = (isCurrency) ? ("Only") : ("");
try
{
int decimalPlace = numb.IndexOf("."); if (decimalPlace > 0)
{
wholeNo = numb.Substring(0, decimalPlace);
dPoints = numb.Substring(decimalPlace + 1);
if (Convert.ToInt32(dPoints) > 0)
{
andStr = (isCurrency) ? ("and") : ("point");// just to separate whole numbers from points,nps
endStr = (isCurrency) ? (endStr) : ("");
pointStr = changeNumbertoWords(dPoints);
}
}
val = String.Format("{0} {1} {2}{3} {4} {5}", currencyName , changeNumbertoWords(wholeNo).Trim(), andStr, pointStr,currencyPoints ,endStr);
}
catch { ;} return val;
}
private String changeNumbertoWords(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 = changeNumbertoWords(number.Substring(0, pos)) + place + changeNumbertoWords(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;
}```

dfdfdf

vccc

#### rohit kappikere 8/7/2012 (IST) / Reply

i will check d code becz it is gentrating error

thanks

#### raveesh 11/2/2012 (IST) / Reply

thanks guys its really helpful for me

#### Dharamvir 5/3/2013 (IST) / Reply

Hi, the result is not correct.

#### Dharamvir 5/3/2013 (IST) / Reply

Hi, the result is not correct.

#### Dumolia Parshotam 6/7/2013 (IST) / Reply

its very gd post ,,,, its reaaally helpful.

h

asass asas

#### Raj 8/2/2014 (IST) / Reply

This can be useful for developers http://www.sourcecodehub.com/article/18/how-to-convert-numbers-to-words-string-in-aspnet-using-csharp

Very nice