vb.net 数字大写

Private Function RMBChinese(ByVal Rmb As Double) As String
Dim Rmbexp As String 
Dim Rmbda As String 
Dim Icnt As Integer 
Dim i As Integer 
Dim Trmb As String
Dim Expda As String 
Dim v1 As Integer = 0

 


Trmb = Format(Rmb, "###0.00")
Trmb = Trmb.Replace(".", "")
Icnt = Len(Trmb)

Rmbexp = "分角元拾佰仟萬拾佰仟億拾佰仟"

Rmbda = "壹貳叁肆伍陸柒捌玖零"


For i = 1 To Icnt

If i < Icnt - 2 Then
If Val(Mid(Trmb, i, 1)) > 0 Then
Expda = Expda & Mid(Rmbda, Val(Mid(Trmb, i, 1)), 1)
Expda = Expda & Mid(Rmbexp, Icnt - i + 1, 1)
End If
End If

If i < Icnt - 6 And i > Icnt - 10 Then
If Val(Mid(Trmb, i, 1)) > 0 Then
v1 = 1
End If
End If


If i = Icnt - 6 Then
If Val(Mid(Trmb, Icnt - 6, 1)) = 0 Then
If v1 > 0 Then
Expda = Expda & "萬"
End If
End If
v1 = 0
End If

If i = Icnt - 10 Then
If Val(Mid(Trmb, Icnt - 10, 1)) = 0 Then
Expda = Expda & "億"
End If
End If

If Icnt > 4 And Val(Mid(Trmb, i, 1)) = 0 Then
If i < Icnt - 2 Then
If Val(Mid(Trmb, i + 1, 1)) > 0 Then
Expda = Expda & "零"
End If
End If
End If


If i = Icnt - 2 And Val(Mid(Trmb, Icnt - 2, 1)) = 0 Then
Expda = Expda & Mid(Rmbexp, 3, 1)
End If

If i = Icnt - 2 And Val(Mid(Trmb, Icnt - 2, 1)) > 0 Then
Expda = Expda & Mid(Rmbda, Val(Mid(Trmb, Icnt - 2, 1)), 1)
Expda = Expda & Mid(Rmbexp, 3, 1)
End If


If i = Icnt - 1 And Val(Mid(Trmb, Icnt - 1, 1)) > 0 Then
Expda = Expda & Mid(Rmbda, Val(Mid(Trmb, Icnt - 1, 1)), 1)
Expda = Expda & Mid(Rmbexp, 2, 1)
End If

If i = Icnt And Val(Mid(Trmb, Icnt, 1)) > 0 Then
Expda = Expda & Mid(Rmbda, Val(Mid(Trmb, Icnt, 1)), 1)
Expda = Expda & Mid(Rmbexp, 1, 1)
End If


If i = Icnt And Mid(Trmb, Icnt, 1) = "0" And Mid(Trmb, Icnt - 1, 1) = "0" Then
Expda = Expda & "整"
End If
Next

 


If Icnt <= 14 Then
Expda = "人民幣" & Expda
RMBChinese = Expda
Else
RMBChinese = "需转换的金额整数长度超过了12位!"
End If

 

End Function

posted @ 2018-08-09 09:03  leme  阅读(399)  评论(0编辑  收藏  举报