Click here to Skip to main content
15,894,343 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Please Guide,

Instead of printing
total 1897.20
Amounts in words C$ One Thousand Eight Hundred Ninety Seven and 20/100 Only

Its print as
total 1897.20
Amounts in words C$ One Thousand Eight Hundred Ninety Seven and 2/100 Only
My Code below
C#
string amountInWords(string number)
    {
        NumberToEnglish num = new NumberToEnglish();
        return num.convertNumber (number);
    }

C#
if (rd1[3].ToString() == "INR")
            {
                if (inr.Paisa == "")
                    invoices.AmountWords = "Rupees " + inr.Rupees + " Only";
                else
                    invoices.AmountWords = "Rupees " + inr.Rupees + " Paise " + inr.Paisa + " Only";
            }
            invoices.AmountWords = AddNewLineChar(invoices.AmountWords, 80);
            conn.Close();
            return invoices;
        }

Please Gide me Where i have stuck
Posted
Comments
CHill60 17-Dec-14 8:03am    
We'd need to see the code for NumberToEnglish.convertNumber
Bensingh 17-Dec-14 8:16am    
public class NumberToEnglish
{

string[] singleDigit = new string[] { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };
string[] tenTeens = new string[] { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
string[] tyies = new string[] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
string[] groups = new string[] { "Hundred", "Thousand", "Million", "Billion" };

public string convertNumber(string number)
{
int decimalPart = 0;
int wholePart = 0;
if (number.Contains(".") && int.Parse(number.Split('.')[1]) > 0)
{

wholePart = int.Parse(number.Split('.')[0]);
string deci = number.Split('.')[1];
if (deci.Length > 2) deci = deci.Substring(0, 2);
decimalPart = int.Parse(deci);
return recurParse(wholePart) + " and " +decimalPart+ "/100" ;
}
else
{
wholePart = int.Parse(number.Split('.')[0]);
return recurParse(wholePart);
}


}
string recurParse(int number)
{
string retValue = "";
if (number < 10)
retValue = singleDigit[number];
if (number < 20 && number >= 10)
retValue = tenTeens[number % 10];
if (number < 100 && number >= 20)
retValue = tyies[(number / 10) - 2] + " " + singleDigit[number % 10];
if (number < 1000 && number >= 100)
retValue = recurParse(number / 100) + " " + groups[0] + " " + recurParse(number % 100);
if (number < 1000000 && number >= 1000)
retValue = recurParse(number / 1000) + " " + groups[1] + " " + recurParse(number % 1000);
if (number < 1000000000 && number >= 1000000)
retValue = recurParse(number / 1000000) + " " + groups[2] + " " + recurParse(number % 1000000);
if (number >= 1000000000)
retValue = recurParse(number / 1000000000) + " " + groups[3] + " " + recurParse(number % 1000000000);

return retValue;

}
}
Matt T Heffron 17-Dec-14 12:29pm    
I don't see a problem.
This code seems to work correctly (at least for the example in the original question).
Bensingh 17-Dec-14 8:17am    
CHill60 please guide me
CHill60 19-Dec-14 7:50am    
Sorry I didn't get back to you. See solution 1 from Maciej...it's what I would also have suggested

1 solution

CP Knowledge Base is very big: Converting numbers to the word equivalent. [^] - by OriginalGriff ;)
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900