How to convert an integer into its written‑out English words in VB.NET

1 Answer

0 votes
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
'

 



answered May 5 by avibootz
...