'
'/ <summary>
'/ 金额小写变大写
'/ </summary>
'/ <param name="smallnum"></param>
'/ <returns></returns>
Public Shared Function gMoney(smallnum As Decimal) As String
Dim cmoney, cnumber, cnum, cnum_end, cmon, cno, snum, sno As String
Dim snum_len, sint_len, cbegin, zflag, i As Integer
If smallnum > 1000000000000.ToUInt32() Or smallnum < - 99999999999.ToUInt32() Or smallnum = 0 Then
Return ""
End If
cmoney = "仟佰拾亿仟佰拾万仟佰拾元角分" ' 大写人民币单位字符串
cnumber = "壹贰叁肆伍陆柒捌玖" ' 大写数字字符串
cnum = "" ' 转换后的大写数字字符串
cnum_end = "" ' 转换后的大写数字字符串的最后一位
cmon = "" ' 取大写人民币单位字符串中的某一位
cno = "" ' 取大写数字字符串中的某一位
snum = Round(smallnum, 2).ToString("############.00") ' 小写数字字符串
snum_len = snum.Length ' 小写数字字符串的长度
sint_len = snum_len - 2 ' 小写数字整数部份字符串的长度
sno = "" ' 小写数字字符串中的某个数字字符
cbegin = 15 - snum_len ' 大写人民币单位中的汉字位置
zflag = 1 ' 小写数字字符是否为0(0=0)的判断标志
i = 0 ' 小写数字字符串中数字字符的位置
If snum_len > 15 Then
Return ""
End If
For i = 0 To snum_len - 1
If i = sint_len - 1 Then
GoTo ContinueFor1
End If
cmon = cmoney.Substring(cbegin, 1)
cbegin = cbegin + 1
sno = snum.Substring(i, 1)
If sno = "-" Then
cnum = cnum + "负"
GoTo ContinueFor1
Else
If sno = "0" Then
cnum_end = cnum.Substring(cnum.Length - 2, 1)
If cbegin = 4 Or(cbegin = 8 Or cnum_end.IndexOf("亿") >= 0 Or cbegin = 12) Then
cnum = cnum + cmon
If cnumber.IndexOf(cnum_end) >= 0 Then
zflag = 1
Else
zflag = 0
End If
Else
zflag = 0
End If
GoTo ContinueFor1
Else
If sno <> "0" And zflag = 0 Then
cnum = cnum + "零"
zflag = 1
End If
End If
End If
cno = cnumber.Substring(System.Convert.ToInt32(sno) - 1, 1)
cnum = cnum + cno + cmon
ContinueFor1:
Next i
If snum.Substring(snum.Length - 2, 1) = "0" Then
Return cnum + "整"
Else
Return cnum
End If
End Function 'gMoney
'/ <summary>
'/ 金额小写变大写
'/ </summary>
'/ <param name="smallnum"></param>
'/ <returns></returns>
Public Shared Function gMoney(smallnum As Decimal) As String
Dim cmoney, cnumber, cnum, cnum_end, cmon, cno, snum, sno As String
Dim snum_len, sint_len, cbegin, zflag, i As Integer
If smallnum > 1000000000000.ToUInt32() Or smallnum < - 99999999999.ToUInt32() Or smallnum = 0 Then
Return ""
End If
cmoney = "仟佰拾亿仟佰拾万仟佰拾元角分" ' 大写人民币单位字符串
cnumber = "壹贰叁肆伍陆柒捌玖" ' 大写数字字符串
cnum = "" ' 转换后的大写数字字符串
cnum_end = "" ' 转换后的大写数字字符串的最后一位
cmon = "" ' 取大写人民币单位字符串中的某一位
cno = "" ' 取大写数字字符串中的某一位
snum = Round(smallnum, 2).ToString("############.00") ' 小写数字字符串
snum_len = snum.Length ' 小写数字字符串的长度
sint_len = snum_len - 2 ' 小写数字整数部份字符串的长度
sno = "" ' 小写数字字符串中的某个数字字符
cbegin = 15 - snum_len ' 大写人民币单位中的汉字位置
zflag = 1 ' 小写数字字符是否为0(0=0)的判断标志
i = 0 ' 小写数字字符串中数字字符的位置
If snum_len > 15 Then
Return ""
End If
For i = 0 To snum_len - 1
If i = sint_len - 1 Then
GoTo ContinueFor1
End If
cmon = cmoney.Substring(cbegin, 1)
cbegin = cbegin + 1
sno = snum.Substring(i, 1)
If sno = "-" Then
cnum = cnum + "负"
GoTo ContinueFor1
Else
If sno = "0" Then
cnum_end = cnum.Substring(cnum.Length - 2, 1)
If cbegin = 4 Or(cbegin = 8 Or cnum_end.IndexOf("亿") >= 0 Or cbegin = 12) Then
cnum = cnum + cmon
If cnumber.IndexOf(cnum_end) >= 0 Then
zflag = 1
Else
zflag = 0
End If
Else
zflag = 0
End If
GoTo ContinueFor1
Else
If sno <> "0" And zflag = 0 Then
cnum = cnum + "零"
zflag = 1
End If
End If
End If
cno = cnumber.Substring(System.Convert.ToInt32(sno) - 1, 1)
cnum = cnum + cno + cmon
ContinueFor1:
Next i
If snum.Substring(snum.Length - 2, 1) = "0" Then
Return cnum + "整"
Else
Return cnum
End If
End Function 'gMoney