Click to See Complete Forum and Search --> : Currency to words converter


m00nbeast
12-29-2004, 02:29 PM
Hi,

I am writing an application where employees can look at their paystubs online. I searched far and wide for an asp or javascript "currency to words" converter and have found only this:



<%
Function NumToString(nNumber)

Dim bNegative
Dim bHundred

If nNumber < 0 Then
bNegative = True
End If

nNumber = Abs(Int(nNumber))

If nNumber < 1000 Then
If nNumber \ 100 > 0 Then
NumToString = NumToString & _
NumToString(nNumber \ 100) & " hundred"
bHundred = True
End If
nNumber = nNumber - ((nNumber \ 100) * 100)
Dim bNoFirstDigit
bNoFirstDigit = False
Select Case nNumber \ 10
Case 0
Select Case nNumber Mod 10
Case 0
If Not bHundred Then
NumToString = NumToString & " zero"
End If
Case 1: NumToString = NumToString & " one"
Case 2: NumToString = NumToString & " two"
Case 3: NumToString = NumToString & " three"
Case 4: NumToString = NumToString & " four"
Case 5: NumToString = NumToString & " five"
Case 6: NumToString = NumToString & " six"
Case 7: NumToString = NumToString & " seven"
Case 8: NumToString = NumToString & " eight"
Case 9: NumToString = NumToString & " nine"
End Select
bNoFirstDigit = True
Case 1
Select Case nNumber Mod 10
Case 0: NumToString = NumToString & " ten"
Case 1: NumToString = NumToString & " eleven"
Case 2: NumToString = NumToString & " twelve"
Case 3: NumToString = NumToString & " thirteen"
Case 4: NumToString = NumToString & " fourteen"
Case 5: NumToString = NumToString & " fifteen"
Case 6: NumToString = NumToString & " sixteen"
Case 7: NumToString = NumToString & " seventeen"
Case 8: NumToString = NumToString & " eighteen"
Case 9: NumToString = NumToString & " nineteen"
End Select
bNoFirstDigit = True
Case 2: NumToString = NumToString & " twenty"
Case 3: NumToString = NumToString & " thirty"
Case 4: NumToString = NumToString & " forty"
Case 5: NumToString = NumToString & " fifty"
Case 6: NumToString = NumToString & " sixty"
Case 7: NumToString = NumToString & " seventy"
Case 8: NumToString = NumToString & " eighty"
Case 9: NumToString = NumToString & " ninety"
End Select
If Not bNoFirstDigit Then
If nNumber Mod 10 <> 0 Then
NumToString = NumToString & "-" & _
Mid(NumToString(nNumber Mod 10), 2)
End If
End If
Else
Dim nTemp
nTemp = 10 ^ 12 'trillion
Do While nTemp >= 1
If nNumber >= nTemp Then
NumToString = NumToString & _
NumToString(Int(nNumber / nTemp))
Select Case Int(Log(nTemp) / Log(10) + 0.5)
Case 12: NumToString = NumToString & " trillion"
Case 9: NumToString = NumToString & " billion"
Case 6: NumToString = NumToString & " million"
Case 3: NumToString = NumToString & " thousand"
End Select

nNumber = nNumber - (Int(nNumber / nTemp) * nTemp)
End If
nTemp = nTemp / 1000
Loop
End If

If bNegative Then
NumToString = " negative" & NumToString
End If

End Function

Function DollarToString(nAmount)
Dim nDollar
Dim nCent

nDollar = Int(nAmount)
nCent = (Abs(nAmount) * 100) Mod 100

DollarToString = NumToString(nDollar) & " dollar"

If Abs(nDollar) <> 1 Then
DollarToString = DollarToString & "s"
End If

DollarToString = DollarToString & " and" & _
NumToString(nCent) & " cent"

If Abs(nCent) <> 1 Then
DollarToString = DollarToString & "s"
End If

End Function

display_text = NumToString(325.50)
%>

</head>
<BODY>

<% response.write "display_text: " & display_text %>

</BODY]
</HTML>


and as you can see I call the function and assign the result to a value with:
display_text = NumToString(325.50)

and then display the result with:
<% response.write "display_text: " & display_text %>

but the output only gives me: "display_text: three hundred twenty-five" and nothing from after the decimal.

Does anyone know of another currency converter I can try or maybe an idea on how to fix this one?

I appreciate any help I can get!

russell
12-29-2004, 02:57 PM
well you can easily use what you have and just call it twice:

Dim n
Dim dollars
Dim cents
Dim display_text

n = 132.50

If InStr(CStr(n), ".") > 0 Then
dollars = Split(n, ".")(0)
cents = Split(n, ".")(1)

display_text = NumToString(dollars) & " dollars and " & NumToString(cents) & "cents"
Else
display_text = NumToString(n) & " dollars"
End If

Response.Write display_text

m00nbeast
12-29-2004, 03:07 PM
you know what? I suck!

I was calling the NumToString function rather than the DollarToString function. *sigh*

Well Russell it looks like you are my case worker here. :D
You'll probably see me a lot :p

Thanks for your help again!