﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » Updates and Information » StrataFrame Users Contributed Samples  » Function to convert numbers to words</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Tue, 09 Jun 2026 02:35:53 GMT</lastBuildDate><ttl>20</ttl><item><title>Function to convert numbers to words</title><link>http://forum.strataframe.net/FindPost22552.aspx</link><description>I had the need for such a function and Juan Carlos[url=http://forum.strataframe.net/FindPost22551.aspx] posted a link to a thread [/url]with the function below, so I pasted in here for future reference:&lt;br&gt;
&lt;br&gt;
[codesnippet] Public Function ConvertMoneyToText(ByVal value As String) As String  &lt;br&gt;
  &lt;br&gt;
        'Takes a string value that translates as a decimal value of up to one pentillion (?) dollars.   &lt;br&gt;
        'Note: Removing the comma for European currency will remove the decimal pointer.   &lt;br&gt;
  &lt;br&gt;
        value = value.Replace(",", "").Replace("$", "")   &lt;br&gt;
        value = value.TrimStart("0")   &lt;br&gt;
  &lt;br&gt;
        Dim decimalCount As Int32 = 0   &lt;br&gt;
        For x As Int32 = 0 To value.Length - 1   &lt;br&gt;
            If value(x).ToString = "." Then  &lt;br&gt;
                decimalCount += 1   &lt;br&gt;
                If decimalCount &gt; 1 Then Throw New ArgumentException("Only monetary values are accepted")   &lt;br&gt;
            End If  &lt;br&gt;
  &lt;br&gt;
            If Not (Char.IsDigit(value(x)) Or value(x).ToString = ".") And Not (x = 0 And value(x).ToString = "-") Then  &lt;br&gt;
                Throw New ArgumentException("Only monetary values are accepted")   &lt;br&gt;
            End If  &lt;br&gt;
        Next  &lt;br&gt;
  &lt;br&gt;
        Dim returnValue As String = ""  &lt;br&gt;
        Dim parts() As String = value.Split(".")   &lt;br&gt;
  &lt;br&gt;
        If parts.Length &gt; 1 Then  &lt;br&gt;
            parts(1) = parts(1).Substring(0, 2).ToCharArray 'Truncates -- doesn't round.   &lt;br&gt;
        End If  &lt;br&gt;
  &lt;br&gt;
        Dim IsNegative As Boolean = parts(0).Contains("-")   &lt;br&gt;
        If parts(0).Replace("-", "").Length &gt; 18 Then  &lt;br&gt;
            Throw New ArgumentException("Maximum value is $999,999,999,999,999,999.99")   &lt;br&gt;
        End If  &lt;br&gt;
  &lt;br&gt;
        If IsNegative Then  &lt;br&gt;
            parts(0) = parts(0).Replace("-", "")   &lt;br&gt;
            returnValue &amp;= "Minus "  &lt;br&gt;
        End If  &lt;br&gt;
  &lt;br&gt;
        'If you know the names of what is beyond quadrillion and feel the urge to do the   &lt;br&gt;
        ' rediculous just follow the pattern below.   &lt;br&gt;
        If parts(0).Length &gt; 15 Then  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(18, "0").Substring(0, 3)) &amp; "Quadrillion "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(18, "0").Substring(3, 3)) &amp; "Trillion "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(18, "0").Substring(6, 3)) &amp; "Billion "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(18, "0").Substring(9, 3)) &amp; "Million "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(18, "0").Substring(12, 3)) &amp; "Thousand "  &lt;br&gt;
        ElseIf parts(0).Length &gt; 12 Then  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(15, "0").Substring(0, 3)) &amp; "Trillion "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(15, "0").Substring(3, 3)) &amp; "Billion "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(15, "0").Substring(6, 3)) &amp; "Million "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(15, "0").Substring(9, 3)) &amp; "Thousand "  &lt;br&gt;
        ElseIf parts(0).Length &gt; 9 Then  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(12, "0").Substring(0, 3)) &amp; "Billion "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(12, "0").Substring(3, 3)) &amp; "Million "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(12, "0").Substring(6, 3)) &amp; "Thousand "  &lt;br&gt;
        ElseIf parts(0).Length &gt; 6 Then  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(9, "0").Substring(0, 3)) &amp; "Million "  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(9, "0").Substring(3, 3)) &amp; "Thousand "  &lt;br&gt;
        ElseIf parts(0).Length &gt; 3 Then  &lt;br&gt;
            returnValue &amp;= HundredsText(parts(0).PadLeft(6, "0").Substring(0, 3)) &amp; "Thousand "  &lt;br&gt;
        End If  &lt;br&gt;
  &lt;br&gt;
        Dim hundreds As String = parts(0).PadLeft(3, "0")   &lt;br&gt;
        hundreds = hundreds.Substring(hundreds.Length - 3, 3)   &lt;br&gt;
        If CInt(hundreds) &lt;&gt; 0 Then  &lt;br&gt;
            If CInt(hundreds) &lt; 100 AndAlso parts.Length &gt; 1 Then returnValue &amp;= "and "  &lt;br&gt;
            returnValue &amp;= HundredsText(hundreds) &amp; "Dollar"  &lt;br&gt;
            If CInt(hundreds) &lt;&gt; 1 Then returnValue &amp;= "s"  &lt;br&gt;
            If parts.Length &gt; 1 AndAlso CInt(parts(1)) &lt;&gt; 0 Then returnValue &amp;= " and "  &lt;br&gt;
        Else  &lt;br&gt;
            returnValue &amp;= " No Dollars"  &lt;br&gt;
            If parts.Length &gt; 1 AndAlso CInt(parts(1)) &lt;&gt; 0 Then returnValue &amp;= " and "  &lt;br&gt;
        End If  &lt;br&gt;
  &lt;br&gt;
        If parts.Length = 2 Then  &lt;br&gt;
            If CInt(parts(1)) &lt;&gt; 0 Then  &lt;br&gt;
                returnValue &amp;= HundredsText(parts(1).PadLeft(3, "0"))   &lt;br&gt;
                returnValue &amp;= "Cent"  &lt;br&gt;
                If CInt(parts(1)) &lt;&gt; 1 Then returnValue &amp;= "s"  &lt;br&gt;
            End If  &lt;br&gt;
        End If  &lt;br&gt;
  &lt;br&gt;
        Return returnValue   &lt;br&gt;
  &lt;br&gt;
    End Function  &lt;br&gt;
  &lt;br&gt;
    Private Function HundredsText(ByVal value As String) As String  &lt;br&gt;
  &lt;br&gt;
        Dim Tens As String() = {"Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"}   &lt;br&gt;
        Dim Ones As String() = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"}   &lt;br&gt;
  &lt;br&gt;
        Dim returnValue As String = ""  &lt;br&gt;
        Dim IsSingleDigit As Boolean = True  &lt;br&gt;
  &lt;br&gt;
        If CInt(value(0).ToString) &lt;&gt; 0 Then  &lt;br&gt;
            returnValue &amp;= Ones(CInt(value(0).ToString) - 1) &amp; " Hundred "  &lt;br&gt;
            IsSingleDigit = False  &lt;br&gt;
        End If  &lt;br&gt;
  &lt;br&gt;
        If CInt(value(1).ToString) &gt; 1 Then  &lt;br&gt;
            returnValue &amp;= Tens(CInt(value(1).ToString) - 1) &amp; " "  &lt;br&gt;
            If CInt(value(2).ToString) &lt;&gt; 0 Then  &lt;br&gt;
                returnValue &amp;= Ones(CInt(value(2).ToString) - 1) &amp; " "  &lt;br&gt;
            End If  &lt;br&gt;
        ElseIf CInt(value(1).ToString) = 1 Then  &lt;br&gt;
            returnValue &amp;= Ones(CInt(value(1).ToString &amp; value(2).ToString) - 1) &amp; " "  &lt;br&gt;
        Else  &lt;br&gt;
            If CInt(value(2).ToString) &lt;&gt; 0 Then  &lt;br&gt;
                If Not IsSingleDigit Then  &lt;br&gt;
                    returnValue &amp;= "and "  &lt;br&gt;
                End If  &lt;br&gt;
                returnValue &amp;= Ones(CInt(value(2).ToString) - 1) &amp; " "  &lt;br&gt;
            End If  &lt;br&gt;
        End If  &lt;br&gt;
  &lt;br&gt;
        Return returnValue   &lt;br&gt;
  &lt;br&gt;
    End Function  &lt;br&gt;
[/codesnippet]</description><pubDate>Mon, 30 Mar 2009 17:46:45 GMT</pubDate><dc:creator>Edhy Rijo</dc:creator></item></channel></rss>