当前位置:编程学习 > VB >>

求小写专大写金额函数思路

本帖最后由 bcrun 于 2011-01-12 12:20:28 编辑 就是个逐位翻译再拼凑起来,没什么技术含量 帮lz格式化一下,这样应该看明白了

Private Function toDaXie(dblNumber As Double) As String
    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
那里不理解啊,程序就是人工思维的转换而已,人手工该怎么转换先理解了,在理解程序就好办了,祝你成功! 老话题了。。。网上都有现成的 这代码不是我改过的吗......⊙﹏⊙b汗
也是网上别人写的,我看有错就顺手改了一下.
自己用一个数值,一步一步断点走下来就知道怎么回事了,确实没什么技术含量.
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,