Hi,
Please refer below code.
HTML
<div>
Enter Amount :
<asp:TextBox ID="txtAmount" runat="server" />
<br />
<br />
<asp:Button Text="Get Words" runat="server" OnClick="ConvertToWords" />
<br />
<br />
<asp:Label ID="lblResult" runat="server" />
</div>
C#
protected void ConvertToWords(object sender, EventArgs e)
{
lblResult.Text = MoneyToWords(Convert.ToDouble(txtAmount.Text));
}
public static string MoneyToWords(double value)
{
decimal money = Math.Round((decimal)value, 2);
int number = (int)money;
int decimalValue = 0;
string doller = string.Empty;
string cents = string.Empty;
doller = NumberToWords(number);
if (money.ToString().Contains("."))
{
decimalValue = int.Parse(money.ToString().Split('.')[1]);
cents = NumberToWords(decimalValue);
}
string result = !string.IsNullOrEmpty(cents) ? (decimalValue == 1 ? string.Format("{0} Doller and {1} Cent Only.", doller, cents) : string.Format("{0} Doller and {1} Cents Only.", doller, cents)) : string.Format("{0} Doller Only.", doller);
return result;
}
public static string NumberToWords(int number)
{
if (number == 0)
return "zero";
if (number < 0)
return "minus " + NumberToWords(Math.Abs(number));
string words = "";
if ((number / 1000000) > 0)
{
words += NumberToWords(number / 1000000) + " Million ";
number %= 1000000;
}
if ((number / 1000) > 0)
{
words += NumberToWords(number / 1000) + " Thousand ";
number %= 1000;
}
if ((number / 100) > 0)
{
words += NumberToWords(number / 100) + " Hundred ";
number %= 100;
}
if (number > 0)
{
var unitsMap = new[] { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
var tensMap = new[] { "Zero", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
if (number < 20)
words += unitsMap[number];
else
{
words += tensMap[(number) / 10];
if ((number % 10) > 0)
words += " " + unitsMap[(number) % 10];
}
}
return words;
}
VB
Protected Sub ConvertToWords(sender As Object, e As EventArgs)
lblResult.Text = MoneyToWords(Convert.ToDouble(txtAmount.Text))
End Sub
Public Shared Function MoneyToWords(value As Double) As String
Dim money As Decimal = Math.Round(CDec(value), 2)
Dim number As Integer = CInt(money)
Dim decimalValue As Integer = 0
Dim doller As String = String.Empty
Dim cents As String = String.Empty
doller = NumberToWords(number)
If money.ToString().Contains(".") Then
decimalValue = Integer.Parse(money.ToString().Split("."C)(1))
cents = NumberToWords(decimalValue)
End If
Dim result As String = If(Not String.IsNullOrEmpty(cents), (If(decimalValue = 1, String.Format("{0} Doller and {1} Cent Only.", doller, cents), String.Format("{0} Doller and {1} Cents Only.", doller, cents))), String.Format("{0} Doller Only.", doller))
Return result
End Function
Public Shared Function NumberToWords(number As Integer) As String
If number = 0 Then
Return "zero"
End If
If number < 0 Then
Return Convert.ToString("minus ") & NumberToWords(Math.Abs(number))
End If
Dim words As String = ""
If (number / 1000000) > 0 Then
words += NumberToWords(number / 1000000) & Convert.ToString(" Million ")
number = number Mod 1000000
End If
If (number / 1000) > 0 Then
words += NumberToWords(number / 1000) & Convert.ToString(" Thousand ")
number = number Mod 1000
End If
If (number / 100) > 0 Then
words += NumberToWords(number / 100) & Convert.ToString(" Hundred ")
number = number Mod 100
End If
If number > 0 Then
Dim unitsMap = New () {"Zero", "One", "Two", "Three", "Four", "Five", _
"Six", "Seven", "Eight", "Nine", "Ten", "Eleven", _
"Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", _
"Eighteen", "Nineteen"}
Dim tensMap = New () {"Zero", "Ten", "Twenty", "Thirty", "Forty", "Fifty", _
"Sixty", "Seventy", "Eighty", "Ninety"}
If number < 20 Then
words += unitsMap(number)
Else
words += tensMap((number) / 10)
If (number Mod 10) > 0 Then
words += " " + unitsMap((number) Mod 10)
End If
End If
End If
Return words
End Function
Screenshot