?
Solved

Converting of digits in dollars in numbers to words

Posted on 2006-06-27
5
Medium Priority
?
739 Views
Last Modified: 2007-12-19
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
Comment
Question by:jedistar
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 6

Expert Comment

by:cubixSoftware
ID: 16993355
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
 
LVL 15

Accepted Solution

by:
JackOfPH earned 1000 total points
ID: 16997733
//**************************************
    //    
    // 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

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
Article by: jpaulino
XML Literals are a great way to handle XML files and the community doesn’t use it as much as it should.  An XML Literal is like a String (http://msdn.microsoft.com/en-us/library/system.string.aspx) Literal, only instead of starting and ending with w…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
Suggested Courses

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question