求小写专大写金额函数思路
本帖最后由 bcrun 于 2011-01-12 12:20:28 编辑 就是个逐位翻译再拼凑起来,没什么技术含量 帮lz格式化一下,这样应该看明白了Private Function toDaXie(dblNumber As Double) As String那里不理解啊,程序就是人工思维的转换而已,人手工该怎么转换先理解了,在理解程序就好办了,祝你成功! 老话题了。。。网上都有现成的 这代码不是我改过的吗......⊙﹏⊙b汗
Dim i As Integer
Dim hzNum(0 To 9), hzDig(0 To 14), strNum As String
Dim HZ, NK, N1, N2 As String
If dblNumber > 9999999999999.99 Then
toDaXie = "#金额溢出#"
Exit Function
End If
If dblNumber = 0 Then
toDaXie = "零元"
Exit Function
End If
hzNum(0) = "零"
hzNum(1) = "壹"
hzNum(2) = "贰"
hzNum(3) = "叁"
hzNum(4) = "肆"
hzNum(5) = "伍"
hzNum(6) = "陆"
hzNum(7) = "柒"
hzNum(8) = "捌"
hzNum(9) = "玖"
hzDig(0) = "分"
hzDig(1) = "角"
hzDig(2) = "圆"
hzDig(3) = "拾"
hzDig(4) = "佰"
hzDig(5) = "仟"
hzDig(6) = "万"
hzDig(7) = "拾"
hzDig(8) = "佰"
hzDig(9) = "仟"
hzDig(10) = "亿"
hzDig(11) = "拾"
hzDig(12) = "佰"
hzDig(13) = "仟"
hzDig(14) = "万"
strNum = Format(Round(dblNumber * 100))
If dblNumber < 0 Then
HZ = "负"
strNum = Mid(strNum, 2)
Else
HZ = ""
End If
For i = 1 To Len(strNum)
NK = Val(Mid(strNum, i, 1))
N1 = hzNum(NK) '转换成大写数字
N2 = hzDig(Len(strNum) - i) ' 转换成元,角,分
If NK = 0 And (N2 = "亿" Or N2 = "万" Or N2 = "圆") Then
If Right(HZ, 1) = "零" Then
HZ = Left(HZ, Len(HZ) - 1)
End If
If Right(HZ, 1) = "亿" Then
If N2 = "圆" Then
N1 = N2
N2 = "零"
Else
N2 = ""
End If
Else
N1 = N2
N2 = "零"
End If
ElseIf NK = 0 Then
N1 = IIf(Right(HZ, 1) = "零", "", N1)
If N2 = "分" Then
If Right(HZ, 1) <> "角" Then
HZ = Left(HZ, Len(HZ) - 1) & "整"
N1 = ""
End If
End If
N2 = ""
End If
HZ = HZ & N1 & N2
Next
If Right(HZ, 1) = "分" And Right(HZ, 2) = "圆整" Then
HZ = Left(HZ, Len(HZ) - 1) & "角"
Else
If Right(HZ, 1) = "零" Then
HZ = Left(HZ, Len(HZ) - 1)
End If
End If
toDaXie = HZ
End Function
也是网上别人写的,我看有错就顺手改了一下.
自己用一个数值,一步一步断点走下来就知道怎么回事了,确实没什么技术含量.
补充:VB , 基础类