CodeItBetter Programming Another VB Programming Blog

How to convert Numbers to words i.e., 44 = fourty four

Posted on August 16, 2011
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
'String Manipulation - How to convert Numbers to words i.e., 44 = fourty four
Option Explicit
 
'Return a string of words to represent the integer part of this value.
Public Function NumbersToWords(ByVal num As Currency) As String
    Dim power_value(1 To 5) As Currency
    Dim power_name(1 To 5) As String
    Dim digits As Integer
    Dim result As String
    Dim i As Integer
    ' Initialize the power names and values.
    power_name(1) = "trillion": power_value(1) = 1000000000000#
    power_name(2) = "billion": power_value(2) = 1000000000
    power_name(3) = "million": power_value(3) = 1000000
    power_name(4) = "thousand": power_value(4) = 1000
    power_name(5) = "": power_value(5) = 1
    For i = 1 To 5
        ' See if we have digits in this range.
        If num >= power_value(i) Then
            ' Get the digits.
            digits = Int(num / power_value(i))
            ' Add the digits to the result.
            If Len(result) > 0 Then result = result & ", "
            result = result & Words_1_999(digits) & " " & power_name(i)
            ' Get the number without these digits.
            num = num - digits * power_value(i)
        End If
    Next i
    NumbersToWords = Trim$(result)
End Function
 
' Return words for this value between 1 and 999.
Public Function Words_1_999(ByVal num As Integer) As String
    Dim hundreds As Integer
    Dim remainder As Integer
    Dim result As String
    hundreds = num \ 100
    remainder = num - hundreds * 100
    If hundreds > 0 Then
        result = Words_1_19(hundreds) & " hundred "
    End If
    If remainder > 0 Then
        result = result & Words_1_99(remainder)
    End If
    Words_1_999 = Trim$(result)
End Function
 
' Return a word for this value between 1 and 19.
Public Function Words_1_19(ByVal num As Integer) As String
    Select Case num
    Case 1
        Words_1_19 = "one"
    Case 2
        Words_1_19 = "two"
    Case 3
        Words_1_19 = "three"
    Case 4
        Words_1_19 = "four"
    Case 5
        Words_1_19 = "five"
    Case 6
        Words_1_19 = "six"
    Case 7
        Words_1_19 = "seven"
    Case 8
        Words_1_19 = "eight"
    Case 9
        Words_1_19 = "nine"
    Case 10
        Words_1_19 = "ten"
    Case 11
        Words_1_19 = "eleven"
    Case 12
        Words_1_19 = "twelve"
    Case 13
        Words_1_19 = "thirteen"
    Case 14
        Words_1_19 = "fourteen"
    Case 15
        Words_1_19 = "fifteen"
    Case 16
        Words_1_19 = "sixteen"
    Case 17
        Words_1_19 = "seventeen"
    Case 18
        Words_1_19 = "eightteen"
    Case 19
        Words_1_19 = "nineteen"
    End Select
End Function
 
' Return a word for this value between 1 and 99.
Public Function Words_1_99(ByVal num As Integer) As String
    Dim result As String
    Dim tens As Integer
    tens = num \ 10
    If tens <= 1 Then
        ' 1 <= num <= 19
        result = result & " " & Words_1_19(num)
    Else
        ' 20 <= num
        ' Get the tens digit word.
        Select Case tens
        Case 2
            result = "twenty"
        Case 3
            result = "thirty"
        Case 4
            result = "forty"
        Case 5
            result = "fifty"
        Case 6
            result = "sixty"
        Case 7
            result = "seventy"
        Case 8
            result = "eighty"
        Case 9
            result = "ninety"
        End Select
        ' Add the ones digit number.
        result = result & " " & Words_1_19(num - tens * 10)
    End If
    Words_1_99 = Trim$(result)
End Function
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


 

No trackbacks yet.