C# Tutorials and offshore development in India
    Tutorials   Resources   Forum   Communities   Interview   Jobs   Projects   Offshore Development    
Silverlight Tutorials | Mentor | Code Converter | Articles | Code Factory | Computer Jokes | Members | Peer Appraisal | IT Companies | Bookmarks | Revenue Sharing |


Prizes & Awards
My Profile



Active Members
TodayLast 7 Days more...

New Feature: Community Sites: Create your own .NET community website and start earning from Google AdSense ! It's Free !




Display the value in letters


Posted Date: 10 Oct 2008      Total Responses: 3

Posted By: s.raja       Member Level: Bronze     Points: 1



I have a textbox and one button in my vb.net form. I have entered the number 11 at the textbox. When i click the button the msgbox display the Your number is Eleven (in words). How i do this.

Could anyone tell to me?

Thanks & regards
Raja.s




Responses

Author: Durga Prasad    10 Oct 2008Member Level: GoldRating:     Points: 6
Declarations

Dim mOnesArray(8) As String
Dim mOneTensArray(9) As String
Dim mTensArray(7) As String
Dim mPlaceValues(4) As String

Code:

Public Class clsConversion

Dim mOnesArray(8) As String
Dim mOneTensArray(9) As String
Dim mTensArray(7) As String
Dim mPlaceValues(4) As String


Public Sub New()

mOnesArray(0) = "one"
mOnesArray(1) = "two"
mOnesArray(2) = "three"
mOnesArray(3) = "four"
mOnesArray(4) = "five"
mOnesArray(5) = "six"
mOnesArray(6) = "seven"
mOnesArray(7) = "eight"
mOnesArray(8) = "nine"

mOneTensArray(0) = "ten"
mOneTensArray(1) = "eleven"
mOneTensArray(2) = "twelve"
mOneTensArray(3) = "thirteen"
mOneTensArray(4) = "fourteen"
mOneTensArray(5) = "fifteen"
mOneTensArray(6) = "sixteen"
mOneTensArray(7) = "seventeen"
mOneTensArray(8) = "eightteen"
mOneTensArray(9) = "nineteen"

mTensArray(0) = "twenty"
mTensArray(1) = "thirty"
mTensArray(2) = "forty"
mTensArray(3) = "fifty"
mTensArray(4) = "sixty"
mTensArray(5) = "seventy"
mTensArray(6) = "eighty"
mTensArray(7) = "ninety"

mPlaceValues(0) = "hundred"
mPlaceValues(1) = "thousand"
mPlaceValues(2) = "million"
mPlaceValues(3) = "billion"
mPlaceValues(4) = "trillion"

End Sub


Protected Function GetOnes(ByVal OneDigit As Integer) As String

GetOnes = ""

If OneDigit = 0 Then
Exit Function
End If

GetOnes = mOnesArray(OneDigit - 1)

End Function


Protected Function GetTens(ByVal TensDigit As Integer) As String

GetTens = ""

If TensDigit = 0 Or TensDigit = 1 Then
Exit Function
End If

GetTens = mTensArray(TensDigit - 2)

End Function


Public Function ConvertNumberToWords(ByVal NumberValue As String) As String

Dim Delimiter As String = " "
Dim TensDelimiter As String = "-"
Dim mNumberValue As String = ""
Dim mNumbers As String = ""
Dim mNumWord As String = ""
Dim mFraction As String = ""
Dim mNumberStack() As String
Dim j As Integer = 0
Dim i As Integer = 0
Dim mOneTens As Boolean = False

ConvertNumberToWords = ""

' validate input
Try
j = CDbl(NumberValue)
Catch ex As Exception
ConvertNumberToWords = "Invalid input."
Exit Function
End Try

' get fractional part {if any}
If InStr(NumberValue, ".") = 0 Then
' no fraction
mNumberValue = NumberValue
Else
mNumberValue = Microsoft.VisualBasic.Left(NumberValue, InStr(NumberValue, ".") - 1)
mFraction = Mid(NumberValue, InStr(NumberValue, ".")) ' + 1)
mFraction = Math.Round(CSng(mFraction), 2) * 100

If CInt(mFraction) = 0 Then
mFraction = ""
Else
mFraction = "&& " & mFraction & "/100"
End If
End If
mNumbers = mNumberValue.ToCharArray

' move numbers to stack/array backwards
For j = mNumbers.Length - 1 To 0 Step -1
ReDim Preserve mNumberStack(i)

mNumberStack(i) = mNumbers(j)
i += 1
Next

For j = mNumbers.Length - 1 To 0 Step -1
Select Case j
Case 0, 3, 6, 9, 12
' ones value
If Not mOneTens Then
mNumWord &= GetOnes(Val(mNumberStack(j))) & Delimiter
End If

Select Case j
Case 3
' thousands
mNumWord &= mPlaceValues(1) & Delimiter

Case 6
' millions
mNumWord &= mPlaceValues(2) & Delimiter

Case 9
' billions
mNumWord &= mPlaceValues(3) & Delimiter

Case 12
' trillions
mNumWord &= mPlaceValues(4) & Delimiter
End Select


Case Is = 1, 4, 7, 10, 13
' tens value
If Val(mNumberStack(j)) = 0 Then
mNumWord &= GetOnes(Val(mNumberStack(j - 1))) & Delimiter
mOneTens = True
Exit Select
End If

If Val(mNumberStack(j)) = 1 Then
mNumWord &= mOneTensArray(Val(mNumberStack(j - 1))) & Delimiter
mOneTens = True
Exit Select
End If

mNumWord &= GetTens(Val(mNumberStack(j)))

' this places the tensdelimiter; check for succeeding 0
If Val(mNumberStack(j - 1)) <> 0 Then
mNumWord &= TensDelimiter
End If
mOneTens = False

Case Else
' hundreds value
mNumWord &= GetOnes(Val(mNumberStack(j))) & Delimiter

If Val(mNumberStack(j)) <> 0 Then
mNumWord &= mPlaceValues(0) & Delimiter
End If
End Select
Next

Return mNumWord & mFraction

End Function



End Class



Author: Athira Appukuttan    10 Oct 2008Member Level: DiamondRating:     Points: 6
Module Module1

Sub Main()
' Console.Write(WriteNumber(1234567890))
Console.WriteLine(WriteNumber(987654321012345678))
For i As Long = 99999999 To 100000001
Console.WriteLine(i.ToString & vbTab & "[" & WriteNumber(i) & "]")

Next
Console.ReadKey()
End Sub

Dim nums() As String = { _
"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", _
"Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Ninteen" _
}
Dim tens() As String = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninty"}

Public Function WriteNumber(ByVal Number As Long, Optional ByVal Level As Long = 0) As String
If (Level = 0) And (Number = 0) Then Return "Zero"
If (Level > 0) And (Number = 0) Then Return ""
If Number < 0 Then Return "Negative " & WriteNumber(Math.Abs(Number))
Select Case Number
Case Is < 20 : Return nums(Number) & " "
Case 20 To 99 : Return tens(Number \ 10) & " " & WriteNumber(Number Mod 10, Level + 1)
Case 100 To 999 : Return nums(Number \ 100) & " Hundred " & IIf(((Number Mod 1000) = 0), "and ", "") & WriteNumber(Number Mod 100, Level + 1)
Case 1000 To 999999 : Return WriteNumber(Number \ 1000, Level + 1) & "Thousand " & IIf(Number Mod 1000 = 0, "", " ") & WriteNumber(Number Mod 1000, Level + 1)
Case 10 ^ 6 To 10 ^ 12 - 1 : Return WriteNumber(Number \ 10 ^ 6, Level + 1) & "Million " & IIf(Number Mod 10 ^ 6 = 0, "", " ") & WriteNumber(Number Mod 10 ^ 6, Level + 1)
Case Is >= 10 ^ 12 : Return WriteNumber(Number \ 10 ^ 12, Level + 1) & "Billion " & IIf(Number Mod 10 ^ 12 = 0, "", " ") & WriteNumber(Number Mod 10 ^ 12, Level + 1)

End Select
Return ""
End Function
End Module



Author: Mari raj k    10 Oct 2008Member Level: SilverRating:     Points: 6
using System;

namespace custom.util

{

public class NumberToEnglish

{

public String changeNumericToWords(double numb)

{

String num = numb.ToString();

return changeToWords(num, false);

}

public String changeCurrencyToWords(String numb)

{

return changeToWords(numb, true);

}

public String changeNumericToWords(String numb)

{

return changeToWords(numb, false);

}

public String changeCurrencyToWords(double numb)

{

return changeToWords(numb.ToString(), true);

}

private String changeToWords(String numb, bool isCurrency)

{

String val = "", wholeNo = numb, points = "", andStr = "", pointStr="";

String endStr = (isCurrency) ? ("Only") : ("");

try

{

int decimalPlace = numb.IndexOf(".");

if (decimalPlace > 0)

{

wholeNo = numb.Substring(0, decimalPlace);

points = numb.Substring(decimalPlace+1);

if (Convert.ToInt32(points) > 0)

{

andStr = (isCurrency)?("and"):("point");// just to separate whole numbers from points/cents

endStr = (isCurrency) ? ("Cents "+endStr) : ("");

pointStr = translateCents(points);

}

}

val = String.Format("{0} {1}{2} {3}",translateWholeNumber(wholeNo).Trim(),andStr,pointStr,endStr);

}

catch { ;}

return val;

}

private String translateWholeNumber(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 = translateWholeNumber(number.Substring(0, pos)) + place + translateWholeNumber(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;

}

private String translateCents(String cents)

{

String cts = "", digit = "", engOne = "";

for (int i = 0; i < cents.Length; i++)

{

digit = cents[i].ToString();

if (digit.Equals("0"))

{

engOne = "Zero";

}

else

{

engOne = ones(digit);

}

cts += " " + engOne;

}

return cts;

}

}

}



Post Reply
You must Sign In to post a response.
Next : OnFocus
Previous : Display a popup window while selecting an item in a radiobutton list control
Return to Discussion Forum
Post New Message
Category: .NET

Related Messages



dotNet Slackers   BizTalk Adaptors    Web Design

web conferencing

Contact Us    Privacy Policy    Terms Of Use