How to convert numeric value into words in c#????plz suggest
me the coding of this question???

Answer Posted / narendran

public class Convertor
{
#region Dec - Arrays
private string[] arrOnes = new string[] {
"Zero",
"One",
"Two",
"Three",
"Four",
"Five",
"Six",
"Seven",
"Eight",
"Nine"
};
private string[] arrMisc = new string[] {
"",
"Eleven",
"Twelve",
"Thirteen",
"Fourteen",
"Fifteen",
"Sixteen",
"Seventeen",
"Eighteen",
"Nineteen",
};
private string[] arrTens = new string[] {
"",
"Ten",
"Twenty",
"Thirty",
"Forty",
"Fifty",
"Sixty",
"Seventy",
"Eighty",
"Ninety",
};

#endregion

#region Constants
private const string HUNDRED_TEXT = " Hundred";
private const string THOUSAND_TEXT = " Thousand";
private const string LAKH_TEXT = " Lakh";
private const string AND_TEXT = " and ";
private const string POINT_TEXT = " point ";
private const string TOO_HIGH_TEXT = "Too high value";

private const int ONE = 1;
private const int TEN = 2;
private const int HUNDRED = 3;
private const int THOUSAND = 4;
private const int TENTHOUSAND = 5;
private const int LAKH = 6;
private const int TENLAKH = 7;

private const int MAX_ALLOWED_LENGTH = TENLAKH;

public const int ERR_TOOLENGTH = -1;
public const int ERR_INPUT = -2;
public const int RET_SUCCESS = 0;
#endregion

public int ConvertNumberToText(String sNumber, out
string sResult)
{
sResult = "";
string[] str = sNumber.Split(new char[] { '.' });
string sStrAfterDecimal = str.Length > 1 ?
str[1] : "";
string sStrBeforeDecimal = str.Length >= 1 ?
str[0] : "";

if (sStrBeforeDecimal.Length > MAX_ALLOWED_LENGTH)
{
sResult = TOO_HIGH_TEXT;
return ERR_TOOLENGTH;
}

if (GetNuumberText(sStrBeforeDecimal, false, ref
sResult) == RET_SUCCESS)
{
if (sStrAfterDecimal != "")
{
sResult += POINT_TEXT;
if (GetNuumberText(sStrAfterDecimal,
true, ref sResult) != RET_SUCCESS)
{
sResult = "Error while computing..";
return ERR_INPUT;
}
}
return RET_SUCCESS;
}
else
{
sResult = "Error while computing..";
return ERR_INPUT;
}
}

private int GetNuumberText(string str, bool
isAfterDecimal, ref string retStr)
{
bool addAndString = false;
try
{
if (isAfterDecimal && str.Length >= 1)
{
for (int i = 0; i < str.Length; i++)
retStr +=
arrOnes[int.Parse(str[i].ToString())] + " ";
retStr = retStr.Remove(retStr.Length - 1);
}
else
{
while (str.Length > 0)
{
switch (str.Length)
{
case ONE:
retStr +=
arrOnes[int.Parse(str[0].ToString())];
str = "";
break;
case TEN:
{
string temp =
GetTwoDigitString(str);
if (temp != "")
retStr +=
addAndString ? AND_TEXT + temp : temp;
str = "";
}
break;
case HUNDRED:
if (str[0] != '0')
retStr +=
string.Format("{0}{1}",
arrOnes[int.Parse(str[0].ToString())], HUNDRED_TEXT);

if (str.Substring(1) != "00")
addAndString = true;
str = str.Remove(0, 1);
break;
case THOUSAND:
retStr +=
string.Format("{0}{1} ",
arrOnes[int.Parse(str[0].ToString())], THOUSAND_TEXT);
str = str.Remove(0, 1);
break;
case TENTHOUSAND:
{
string temp =
GetTwoDigitString(str.Substring(0, 2));
if (temp != "")
retStr +=
string.Format("{0}{1} ", temp, THOUSAND_TEXT);
str = str.Remove(0, 2);
}
break;
case LAKH:
retStr +=
string.Format("{0}{1} ",
arrOnes[int.Parse(str[0].ToString())], LAKH_TEXT);
str = str.Remove(0, 1);
break;
case TENLAKH:
{
string temp =
GetTwoDigitString(str.Substring(0, 2));
if (temp != "")
retStr +=
string.Format("{0}{1} ", temp, LAKH_TEXT);
str = str.Remove(0, 2);
}
break;
default:
break;
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return ERR_INPUT;
}
return RET_SUCCESS;
}

private string GetTwoDigitString(string str)
{
if (str == "00") return "";
string retString = "";
if (str[1] == '0')
retString +=
arrTens[int.Parse(str[0].ToString())];
else if (str[0] == '1')
retString +=
arrMisc[int.Parse(str[1].ToString())];
else
{
retString +=
arrTens[int.Parse(str[0].ToString())];
retString +=
arrOnes[int.Parse(str[1].ToString())];
}
return retString;
}
}

Is This Answer Correct ?    10 Yes 1 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

How does the TCP handle the issue of multiplexing?

2404


what is the difference between an OS(operating system) and Framework?

1524


what is the meaning of without standing arrears?

9863


Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fit" instead of the number and for the multiples of five print "Bit". For numbers which are multiples of both three and five print "FitBit".

1957


Any real time example of O2C process from taking order till creating invoice.

1791






what is the system development cycle

1267


Code for display the images from drive using vb 6.0?

4291


Given an array of size n. It contains numbers in the range 1 to n. Find the numbers which aren?t present.

628


what is meant by life cycle of a business

1701


hii I inntrested abt scjp certification but i dont knw abt scjp plz send details abt scjp exam and syllabus.

1394


hi, all this is shoba m.c.a . i have learned abap but no oppurtunities right now as fresher , right now i want to learn any course on demand any one pls suggest me good course and institute in hyderabad

1398


what are stubs related to foxpro?

1662


what are the missinschema properties and should we pass primary key in select command

1421


When we delete logfiles such as screenshots how does it affect the ldf file? Ive seen huge change while adding screenshots in the ldf file but a very minor one deleting them.Please Explain

1415


1. Write a program to create a sentence at runtime and count number of vowels in it ? 2. Write a program to get a string and to convert the 1st letter of it to uppercase ?

3216