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; }
Comments/Suggestions are invited. Happy coding......!
Comments Post a Comment
vijay 6/5/2012 (IST) / Reply
dfdfdf
vetri 6/14/2012 (IST) / Reply
vccc
rohit kappikere 8/7/2012 (IST) / Reply
i will check d code becz it is gentrating error
sainath iyer 10/28/2012 (IST) / Reply
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.
anant 6/26/2013 (IST) / Reply
h
hari 8/16/2013 (IST) / Reply
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
Rahul 6/15/2015 (IST) / Reply
Very nice