数字转大写人民币


    ''' <summary>
    ''' 将数字转换成大写人民币
    ''' </summary>
    ''' <param name="v">要转换的数字字符串</param>
    ''' <returns>转换后的大写人民币字符串</returns>
    Public Function ConvertToChineseNum(var As String) As String
        Dim numList As String = "零壹贰叁肆伍陆柒捌玖"
        Dim rmbList As String = "分角元拾佰仟万拾佰仟亿拾佰仟万"
        Dim number As Double = 0
        Dim tempOutString As String = Nothing


        Try
            number = Double.Parse(var)
        Catch
            MessageBox.Show("传入参数非数字!")
            Return var
        End Try
        If number > 9999999999999.99 Then
            MessageBox.Show("超出范围的人民币值")

        End If
        '将小数转化为整数字符串 

        If number > 0 Then

            Dim tempNumberString As String = Convert.ToInt64(number * 100).ToString()
            Dim tempNmberLength As Integer = tempNumberString.Length
            Dim i As Integer = 0
            While i < tempNmberLength
                Dim oneNumber As Integer = Int32.Parse(tempNumberString.Substring(i, 1))
                Dim oneNumberChar As String = numList.Substring(oneNumber, 1)
                Dim oneNumberUnit As String = rmbList.Substring(tempNmberLength - i - 1, 1)
                If oneNumberChar <> "零" Then
                    tempOutString += oneNumberChar & oneNumberUnit
                Else
                    If oneNumberUnit = "亿" OrElse oneNumberUnit = "万" OrElse oneNumberUnit = "元" OrElse oneNumberUnit = "零" Then
                        While tempOutString.EndsWith("零")
                            tempOutString = tempOutString.Substring(0, tempOutString.Length - 1)
                        End While
                    End If
                    If oneNumberUnit = "亿" OrElse (oneNumberUnit = "万" AndAlso Not tempOutString.EndsWith("亿")) OrElse oneNumberUnit = "元" Then
                        tempOutString += oneNumberUnit
                    Else
                        Dim tempEnd As Boolean = tempOutString.EndsWith("亿")
                        Dim zeroEnd As Boolean = tempOutString.EndsWith("零")
                        If tempOutString.Length > 1 Then
                            Dim zeroStart As Boolean = tempOutString.Substring(tempOutString.Length - 2, 2).StartsWith("零")
                            If Not zeroEnd AndAlso (zeroStart OrElse Not tempEnd) Then
                                tempOutString += oneNumberChar
                            End If
                        Else
                            If Not zeroEnd AndAlso Not tempEnd Then
                                tempOutString += oneNumberChar
                            End If
                        End If
                    End If
                End If
                i += 1
            End While
            While tempOutString.EndsWith("零")
                tempOutString = tempOutString.Substring(0, tempOutString.Length - 1)
            End While
            While tempOutString.EndsWith("元")
                tempOutString = tempOutString & "整"
            End While


        Else
            tempOutString = "零"
        End If
        Return tempOutString
    End Function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值