正在装载数据……
金额转换成中文大写
VB 版
'中文大写金额
Public Function CNmoney(number)
Dim strnumber, strnumber1, tempnumber As String
Dim i, lennumber As Integer
If number = 0 Then CNmoney = "": GoTo zjkend '如等于零则退出
If Abs(number) >= 10000000000000# Or Abs(number) < 0.0051 Then _
CNmoney = "数值溢出": GoTo zjkend '如太大太小则显示错误
If number < 0 Then CNmoney = "负" '负数的处理
strnumber = CStr(Round(Abs(number), 2))
If InStr(strnumber, ".") <> 0 Then '判断是否有小数部分
strnumber1 = Mid(strnumber, InStr(strnumber, ".") + 1, 2) '小数部分
strnumber = Left(strnumber, InStr(strnumber, ".") - 1) '整数部分
End If
lennumber = Len(strnumber)
'处理整数部分
For i = lennumber To 1 Step -1 '开始循环,对每一个数进行转换及加上单位
tempnumber = Mid(strnumber, lennumber + 1 - i, 1)
If tempnumber = 0 And i <> 5 And i <> 9 And _
Mid(strnumber, lennumber + 2 - i, 1) <> 0 And i <> 1 Then
CNmoney = CNmoney + "零" '对零的处理
Else
Select Case tempnumber '对非零数进行转换
Case 1
CNmoney = CNmoney + "壹"
Case 2
CNmoney = CNmoney + "贰"
Case 3
CNmoney = CNmoney + "叁"
Case 4
CNmoney = CNmoney + "肆"
Case 5
CNmoney = CNmoney + "伍"
Case 6
CNmoney = CNmoney + "陆"
Case 7
CNmoney = CNmoney + "柒"
Case 8
CNmoney = CNmoney + "捌"
Case 9
CNmoney = CNmoney + "玖"
End Select
End If
If tempnumber <> 0 Or i = 1 Or i = 9 Or _
(i = 5 And Right(CNmoney, 1) <> "亿") Then
Select Case i '在适当的数位上加上单位
Case 13
CNmoney = CNmoney + "万"
Case 12
CNmoney = CNmoney + "仟"
Case 11
CNmoney = CNmoney + "佰"
Case 10
CNmoney = CNmoney + "拾"
Case 9
CNmoney = CNmoney + "亿"
Case 8
CNmoney = CNmoney + "仟"
Case 7
CNmoney = CNmoney + "佰"
Case 6
CNmoney = CNmoney + "拾"
Case 5
CNmoney = CNmoney + "万"
Case 4
CNmoney = CNmoney + "仟"
Case 3
CNmoney = CNmoney + "佰"
Case 2
CNmoney = CNmoney + "拾"
Case 1
CNmoney = CNmoney + "元"
End Select
End If
Next i
'处理小数部分
If strnumber1 = "" Then
CNmoney = CNmoney + "整" '没小数的处理
Else
If Len(strnumber1) = 2 Then
'处理有元角的小数
tempnumber = Left(strnumber1, 1)
If tempnumber = 0 And (CNmoney = "" Or CNmoney = "负") Then
Else
Select Case tempnumber
Case 0
CNmoney = CNmoney + "零"
Case 1
CNmoney = CNmoney + "壹角"
Case 2
CNmoney = CNmoney + "贰角"
Case 3
CNmoney = CNmoney + "叁角"
Case 4
CNmoney = CNmoney + "肆角"
Case 5
CNmoney = CNmoney + "伍角"
Case 6
CNmoney = CNmoney + "陆角"
Case 7
CNmoney = CNmoney + "柒角"
Case 8
CNmoney = CNmoney + "捌角"
Case 9
CNmoney = CNmoney + "玖角"
End Select
End If
tempnumber = Right(strnumber1, 1)
Select Case tempnumber
Case 1
CNmoney = CNmoney + "壹分"
Case 2
CNmoney = CNmoney + "贰分"
Case 3
CNmoney = CNmoney + "叁分"
Case 4
CNmoney = CNmoney + "肆分"
Case 5
CNmoney = CNmoney + "伍分"
Case 6
CNmoney = CNmoney + "陆分"
Case 7
CNmoney = CNmoney + "柒分"
Case 8
CNmoney = CNmoney + "捌分"
Case 9
CNmoney = CNmoney + "玖分"
End Select
Else
'处理有元无角的小数
Select Case strnumber1
Case 1
CNmoney = CNmoney + "壹角整"
Case 2
CNmoney = CNmoney + "贰角整"
Case 3
CNmoney = CNmoney + "叁角整"
Case 4
CNmoney = CNmoney + "肆角整"
Case 5
CNmoney = CNmoney + "伍角整"
Case 6
CNmoney = CNmoney + "陆角整"
Case 7
CNmoney = CNmoney + "柒角整"
Case 8
CNmoney = CNmoney + "捌角整"
Case 9
CNmoney = CNmoney + "玖角整"
End Select
End If
End If
zjkend:
End Function[/code]
VB.NET 版
Private Function ConvertMoney(ByVal Money As String) As String
Dim my_cstr As String() = New String(9) {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}
'定义数字转换
Dim my_wstr As String() = New String(12) {"", "", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟"}
''定义金额单位转换
Dim my_wstrdot As String() = New String(2) {"", "分", "角"}
'定义金额单位转换
Dim li_len As Integer = 0
Dim li_i As Integer = 0
Dim ls_dotMoney As String = String.Empty
Dim ls_retstr As String = String.Empty
Dim ls_tmp As String = String.Empty
If Money.IndexOf(".") <> -1 Then '判断是否带小数点
ls_dotMoney = ConvertDotMoney(Money.Substring(Money.IndexOf(".") + 1))
' ls_tmp = Money.Substring(0, Money.IndexOf("."))
li_len = Money.Substring(0, Money.IndexOf(".")).Length '从开始的位置到有小数点时结束
Else '无小数点
li_len = Money.Length
End If
For li_i = 1 To li_len
ls_tmp = Money.Substring(li_len - li_i, 1)
ls_retstr = String.Concat(my_cstr(Int32.Parse(ls_tmp)) + my_wstr(li_i), ls_retstr)
Next
If ls_retstr.Substring(ls_retstr.Length - 1, 1) = "零" Then _
ls_retstr = ls_retstr.Substring(0, ls_retstr.Length - 1)
ls_retstr = ls_retstr.Replace("零拾", "零")
ls_retstr = ls_retstr.Replace("零佰", "零")
ls_retstr = ls_retstr.Replace("零仟", "零")
ls_retstr = ls_retstr.Replace("零萬", "萬")
ls_retstr = ls_retstr.Replace("零零", "零")
ls_retstr = ls_retstr.Replace("零萬", "零")
ls_retstr = ls_retstr.Replace("零億", "億")
ls_retstr = ls_retstr.Replace("零零", "零")
If ls_retstr.Substring(0, 1) = "零" Then ls_retstr = ls_retstr.Substring(1)
ls_retstr = ls_retstr + "元" + ls_dotMoney
ConvertMoney = ls_retstr
Return ConvertMoney
End Function
Private Function ConvertDotMoney(ByVal Money As String) As String '处理小数点后面的部分数字
Dim li_len As Integer = 0
Dim li_i As Integer = 0
Dim ls_tmp As String = ""
Dim ls_retstr As String = ""
If Money.IndexOf(".") <> -1 Then
ls_retstr = "输入的金额有误!"
Else
li_len = Money.Length
End If
For li_i = 1 To li_len
ls_tmp = Money.Substring(li_len - li_i, 1)
ls_retstr = String.Concat(my_cstr(Int32.Parse(ls_tmp)) + my_wstrdot(li_i), ls_retstr)
Next
If ls_retstr.Substring(ls_retstr.Length - 1, 1) = "零" Then _
ls_retstr = ls_retstr.Substring(0, ls_retstr.Length - 1)
For li_i = 1 To 1
ls_retstr.Replace("零分", "")
ls_retstr.Replace("零角", "零")
ls_retstr = ls_retstr.Replace("零零", "零")
Next
If ls_retstr.Substring(0, 1) = "零" Then ls_retstr.Substring(1)
ls_retstr = ls_retstr + "整"
ConvertDotMoney = ls_retstr
Return ConvertDotMoney
End Function
本文来源:http://blog.csdn.net/heimaoxiaozi/archive/2007/08/13/1740560.aspx