zss1100
爱就要负责

Public Class DX_RMB
    Public Shared Function DX_RMB(ByVal nNum As String) As String
        Dim i, cNum, dx_num, rmb, temp, c1, c2
        If nNum < 1000000000000 Then                 '共12个0,亿亿级  
            cNum = Trim(CStr(nNum))         '先转化为正数后再转化为数字字符串  

            i = InStr(1, cNum, ".")
            If i > 0 Then
                '存在小数部分时  
                cNum = cNum + "00"
                cNum = Mid(cNum, 1, i - 1) & Mid(cNum, i + 1, 2)                               '取小数点后2位数字  
            Else
                '不存在小数部分时  
                cNum = cNum & "00"
            End If

            dx_num = ""
            For i = 1 To Len(cNum)
                dx_num = Mid("零壹贰叁肆伍陆柒捌玖", CInt(Mid(cNum, Len(cNum) - i + 1, 1)) + 1, 1) & Mid("分角元拾佰仟万拾佰仟亿拾佰仟", i, 1) & dx_num
            Next

            rmb = ""
            For i = 1 To Len(dx_num) Step 2
                c1 = Mid(dx_num, i, 1)             '取出一个数字  
                If c1 = "零" Then
                    '若为零则特殊处理  
                    c2 = Mid(dx_num, i + 1, 1)                 '取出数字后的单位,如元角分等  
                    If Len(rmb) >= 2 Then
                        '若前一个数字也是"零",则取消该"零",使得不会有连续两个"零零"的情况出现  
                        If (Right(rmb, 1) = "零") Then
                            temp = ""
                        Else
                            temp = "零"
                        End If
                        rmb = rmb & temp
                        '若正好卡在"亿万元"位上,且它的前面正好是个"零",则去"零",加"亿万元"等位数名称  
                        If InStr(1, "亿万元", c2) > 0 And Right(rmb, 1) = "零" Then
                            rmb = Mid(rmb, 1, Len(rmb) - 1)               '去零  
                            If Not (Right(rmb, 1) = "亿" And c2 = "万") Then
                                '若"亿""万"不相连,则进行添加,否则不添加  
                                rmb = rmb & c2
                            End If
                        End If
                    End If
                Else
                    '若不为"零",则正常处理  
                    rmb = rmb & Mid(dx_num, i, 2)
                End If
            Next

            '取消最左边的"零"和最右边的"零"  
            If Mid(rmb, 1, 1) = "零" Then
                rmb = Mid(rmb, 2)
            End If
            If Right(rmb, 1) = "零" Then
                rmb = Mid(rmb, 1, Len(rmb) - 1)
            End If
            '若结果为空,则加上"零元"字  
            If rmb = "" Then
                rmb = "零元"
            End If
            '若最后   1   位为"亿"或"万",则在其后加上一个"元"字  
            If Right(rmb, 1) = "亿" Or Right(rmb, 1) = "万" Then
                rmb = rmb & "元"
            End If
            '若最后   1   位为"元",则在其后增加"整"字  
            If Right(rmb, 1) = "元" Then
                rmb = rmb & "整"
            End If
            DX_RMB = rmb
        Else
            DX_RMB = "最大只能转换'千亿'级的金额数字!"
        End If
    End Function
End Class

posted on 2007-03-04 17:52  打你鸟鸟头  阅读(228)  评论(0编辑  收藏  举报