Imports System
Module NumberToWordsProgram
Private ReadOnly below20 As String() = {
"", "one", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
"nineteen"
}
Private ReadOnly tens As String() = {
"", "", "twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety"
}
Private Function SetBelow20AndTens(num As Integer) As String
If num = 0 Then
Return ""
ElseIf num < 20 Then
Return below20(num) & " "
ElseIf num < 100 Then
Return tens(num \ 10) & " " & SetBelow20AndTens(num Mod 10)
Else
Return below20(num \ 100) & " hundred " & SetBelow20AndTens(num Mod 100)
End If
End Function
Private Function NumberToWords(num As Integer) As String
If num = 0 Then
Return "zero"
End If
Dim result As String = ""
If num >= 1000000000 Then
result &= SetBelow20AndTens(num \ 1000000000) & "billion "
num = num Mod 1000000000
End If
If num >= 1000000 Then
result &= SetBelow20AndTens(num \ 1000000) & "million "
num = num Mod 1000000
End If
If num >= 1000 Then
result &= SetBelow20AndTens(num \ 1000) & "thousand "
num = num Mod 1000
End If
If num > 0 Then
result &= SetBelow20AndTens(num)
End If
Return result.Trim()
End Function
Sub Main()
Dim n As Integer = 176283
Console.WriteLine(NumberToWords(n))
End Sub
End Module
' run:
'
' one hundred seventy six thousand two hundred eighty three
'