CSDN博客

img webdesigning

金额数值小写转大写函数

发表于2004/9/19 15:33:00  836人阅读

分类: vb & asp

刚写的一个函数,但只能对"亿"以下的数值有效.如果超过Long类型的数值范围则转换会出错!!!!
函数直接使用ChangeMoney(数值)即可!!得到的则是转换后的大写数额

以下是第一次写的:对0不起隐藏作用
<%
Response.Write(ChangeMoney(235))

Function ChangeMoney(sMoney)
On Error Resume Next
Dim sTo
Dim iInt,iMod
'取得整数
sMoney=sMoney / 1
If Err.Number<>0 Then
? ?Response.Write "数值太大!!不能转换!!"
? ?Response.End
End If
iInt=Len(sMoney)
If iInt>5 Then ? ?'超过万
? ?iMod=iInt-4
? ?sTo=ChangeTo(sMoney,iMod,1)
? ?iMod=4
? ?sTo=sTo&"万"
? ?sTo=sTo&ChangeTo(sMoney,iMod,0)&"元整"
Else
? ?sTo=ChangeTo(sMoney,iInt,0)&"元整"
End iF
ChangeMoney=sTo
End Function

Function ChangeTo(sMoney,iNum,iTo)
? ?Dim sTr
? ?Do While iNum>0
? ? ? sTr=sTr&GetMoney(sMoney,iNum,iTo)
? ? ? iNum=iNum-1 ?
? ?Loop
? ?ChangeTo=sTr
End Function

Function GetMoney(sMoney,iNum,iTo)
? ?Dim sMen,sStr,iLen
? ?iLen=Len(sMoney)-(iNum+iTo*5)+1+iTo
? ?sMen="零壹贰叄肆伍陆柒捌玖"
? ?Select Case iNum
? ? ?? ?? Case 5
? ? ? ? ? ? ? ?If iTo=1 Then
? ? ? ? ? ? ? ?? sStr="亿"
? ? ? ? ? ? ? ? ?Else
? ? ? ? ? ? ? ? ? ?sStr="万"
? ? ? ? ? ? ? ? ?End If
? ? ?? ?? Case 4
? ? ? ? ? ? ? ? sStr="千" ?
? ? ?? ?? Case 3
? ? ? ? ? ? ? ? sStr="百" ?
? ? ?? ?? Case 2
? ? ? ? ? ? ? ? sStr="十" ?
? ? ?? ?? Case else
? ? ? ? ? ? ? ? sStr=""
? ? ?End Select
? ? ?GetMoney=Mid(sMen,Cint(Mid(sMoney,iLen,1))+1,1)&sStr
End Function
%>

最后修改的,对连续的0起隐藏作用:

<%
Response.Write(ChangeMoney(2032400))

Function ChangeMoney(sMoney)
On Error Resume Next
Dim sTo
Dim iInt,iMod
'取得整数
sMoney=sMoney / 1
If Err.Number<>0 Then
?? Response.Write "数值太大!!不能转换!!"
?? Response.End
End If
If Left(sMoney,1)="0" Then
?? Response.Write "输入错误的数值!开头不能是0!"
?? Response.End
End If
iInt=Len(sMoney)
If iInt>5 Then??? '超过万
?? iMod=iInt-4
?? sTo=ChangeTo(sMoney,iMod,1)
?? iMod=4
?? sTo=sTo&"万"
?? sTo=sTo&ChangeTo(sMoney,iMod,0)&"元整"
Else
?? sTo=ChangeTo(sMoney,iInt,0)&"元整"
End iF
ChangeMoney=sTo
End Function

Function ChangeTo(sMoney,iNum,iTo)
?? Dim sTr
?? Do While iNum>0
????? sTr=sTr&GetMoney(sMoney,iNum,iTo)
????? iNum=iNum-1?
?? Loop
?? ChangeTo=sTr
End Function

Function GetMoney(sMoney,iNum,iTo)
?? Dim sMen,sStr,iLen,sNum,sVal
?? iLen=Len(sMoney)-(iNum+iTo*5)+1+iTo
?? sMen="零壹贰叄肆伍陆柒捌玖"
?? sVal=" 十百千万"
?? sStr=Mid(sVal,iNum,1)
?? If iNum=5 And iTo=1 Then?? '亿
????? sStr="亿"
?? End If
?? sNum=Mid(sMoney,iLen,1)
?? If sNum<>"0" Then
? GetMoney=Mid(sMen,Cint(sNum)+1,1)&trim(sStr)
?? Else
? GetMoney=""
?? End If
End Function
%>

 

出自:

鱼的天堂与地狱

0 0

相关博文

我的热门文章

img
取 消
img