[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 744
  • Last Modified:

Converting of digits in dollars in numbers to words

Hi,

I would like to know whats the most efficient way to convert digits to words i.e

12.00 to twelve dollars

12.34 to twelve dollars and thirty-four cents.

Thanks.
0
jedistar
Asked:
jedistar
1 Solution
 
cubixSoftwareCommented:
Hi

This is a Excel VBA function, but should be easy to convert over
http://xl.barasch.com/cCo11432.htm


or try this

http://www.vbcity.com/forums/topic.asp?tid=120553&#RID384555

0
 
JackOfPHCommented:
//**************************************
    //    
    // Name: Currency2Text
    // Description:This function converts am
    //     ount in words with supplied currency par
    //     ameters.
    (based on AmtToWords by Atul Alurkar)
    // By: Rohan Cragg
    //
    // Inputs:Amount As Double
    UnitCurr As String ' e.g. POUND, DOLLAR, EURO
    DecCurr As String ' e.g. PENNY, CENT
    UnitsCurr As String ' e.g. POUNDS, DOLLARS
    DecsCurr As String ' e.g. PENCE, CENTS, EUROS
    UpperCase as Boolean ' optional parameter to state if you want results in UpperCase or not
    //
    // Returns:The currency ammount in words
    //     (in English but you could easily change
    //     it to another language) e.g. Curr2Text(1
    //     2345.01, "POUND", "PENNY", "POUNDS", "PE
    //     NCE", True) will return "TWELVE THOUSAND
    //     THREE HUNDRED FORTY-FIVE POUNDS AND ONE
    //     PENNY ONLY"
    //
    // Assumes:maximum amount that can be co
    //     nverted by this function is 922,337,203,
    //     685,477
    //
    //This code is copyrighted and has    // limited warranties.Please see http://
    //     www.Planet-Source-Code.com/vb/scripts/Sh
    //     owCode.asp?txtCodeId=2136&lngWId=10    //for details.    //**************************************
    //    
   
    Public Function Curr2Text(ByVal amount As Double, _
    ByVal UnitCurr As String, _
    ByVal DecCurr As String, _
    ByVal UnitsCurr As String, _
    ByVal DecsCurr As String, _
    Optional ByVal UpperCase As Boolean = False) As String
    Dim new_amt, TRstring, BIstring, MIstring, THstring, HUstring, DEstring, Separator As String
    If amount = 0 Then
    Curr2Text = "NIL"
    Exit Function
    End If
    units(0) = ""
    units(1) = " ONE"
    units(2) = " TWO"
    units(3) = " THREE"
    units(4) = " FOUR"
    units(5) = " FIVE"
    units(6) = " SIX"
    units(7) = " SEVEN"
    units(8) = " EIGHT"
    units(9) = " NINE"
    units(10) = " TEN"
    units(11) = " ELEVEN"
    units(12) = " TWELVE"
    units(13) = " THIRTEEN"
    units(14) = " FOURTEEN"
    units(15) = " FIFTEEN"
    units(16) = " SIXTEEN"
    units(17) = " SEVENTEEN"
    units(18) = " EIGHTEEN"
    units(19) = " NINETEEN"
    teens(0) = ""
    teens(1) = " TEN"
    teens(2) = " TWENTY"
    teens(3) = " THIRTY"
    teens(4) = " FORTY"
    teens(5) = " FIFTY"
    teens(6) = " SIXTY"
    teens(7) = " SEVENTY"
    teens(8) = " EIGHTY"
    teens(9) = " NINETY"
    teens(10) = " HUNDRED"
    new_amt = Format(amount, "000000000000000.00")
    TRstring = Mid(new_amt, 1, 3)
    BIstring = Mid(new_amt, 4, 3)
    MIstring = Mid(new_amt, 7, 3)
    THstring = Mid(new_amt, 10, 3)
    HUstring = Mid(new_amt, 13, 3)
    DEstring = "0" & Mid(new_amt, 17, 2)
    Curr2Text = ""
    UnitCurr = IIf(CInt(Left(new_amt, 15)) = 0, "", UnitCurr).ToString
    DecCurr = IIf(CInt(Right(new_amt, 2)) = 0, "", DecCurr).ToString
    UnitCurr = IIf(CInt(Left(new_amt, 15)) > 1, UnitsCurr, UnitCurr).ToString
    DecCurr = IIf(CInt(Right(new_amt, 2)) > 1, DecsCurr, DecCurr).ToString
    Separator = IIf(Not UnitCurr.Equals(String.Empty) And Not DecCurr.Equals(String.Empty), " AND", String.Empty).ToString
    'Curr2Text = UnitCurr & Curr2Text
    Curr2Text &= IIf(CInt(TRstring) > 0, numconv(TRstring) & " TRILLION", "").ToString
    Curr2Text &= IIf(CInt(BIstring) > 0, numconv(BIstring) & " BILLION", "").ToString
    Curr2Text &= IIf(CInt(MIstring) > 0, numconv(MIstring) & " MILLION", "").ToString
    Curr2Text &= IIf(CInt(THstring) > 0, numconv(THstring) & " THOUSAND", "").ToString
    Curr2Text &= IIf(CInt(HUstring) > 0, numconv(HUstring), "").ToString
    Curr2Text &= " " & UnitCurr
    Curr2Text &= IIf(CInt(DEstring) > 0, Separator & numconv(DEstring), "").ToString
    Curr2Text = Curr2Text.Trim & IIf(Not DecCurr.Equals(String.Empty), " " & DecCurr.Trim, String.Empty).ToString
    Curr2Text &= " ONLY"
    If UpperCase = False Then
    Return Curr2Text.Substring(0, 1) & Curr2Text.Substring(1, Curr2Text.Length - 1).ToLower
    Else
    Return Curr2Text
    End If
    End Function
    Private Function numconv(ByVal amt As String) As String
    Dim aAmount, bAmount, cAmount, dAmount As Integer
    Dim hyphen As String
    aAmount = CInt(amt.Substring(1, 2))
    bAmount = CInt(amt.Substring(2, 1))
    cAmount = CInt(amt.Substring(1, 1))
    dAmount = CInt(amt.Substring(0, 1))
    If aAmount < 20 Then
    numconv = units(aAmount)
    Else
    numconv = units(bAmount)
    If bAmount > 0 And cAmount > 0 Then
    hyphen = "-"
    End If
    numconv = teens(cAmount) & hyphen & numconv.TrimStart
    End If
    If dAmount > 0 Then
    If numconv.Equals(String.Empty) Then
    numconv = units(dAmount) & " HUNDRED" & numconv
    Else
    numconv = units(dAmount) & " HUNDRED AND" & numconv
    End If
    End If
    End Function

The above code is from ...
http://pscode.com/vb/scripts/ShowCode.asp?txtCodeId=2136&lngWId=10
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now