将货币转换为大写VB

Public Class ConvertMoney
    '输入字串

    Private _InputString As String

    '输出字串,如果无效则输出错误信息


    Private _OutString As String

    '判断输出字串是否有效

    Private _Valiad As Boolean

 

    Public WriteOnly Property InputString() As String

        Set(ByVal Value As String)

            _InputString = Value

            ConvertToChineseNum()

        End Set

    End Property

    Public ReadOnly Property Valiad() As Boolean

        Get

            Return _Valiad

        End Get

    End Property

    Public ReadOnly Property OutString() As String

        Get

            Return _OutString

        End Get

    End Property

    Private Sub ConvertToChineseNum()

        Dim numList As String = "零壹贰叁肆伍陆柒捌玖"

        Dim rmbList As String = "分角元拾佰仟万拾佰仟亿拾佰仟万"

        Dim number As Double = 0

        Dim tempOutString As String = ""

        Try

            number = Double.Parse(Me._InputString)

        Catch ex As SystemException

            Me._OutString = "传入的数据不是正确的货币值!"

            Me._Valiad = False

            Return

        End Try

        If number > 9999999999999.99 Then

            Me._Valiad = False

            Me._OutString = "传入的值超出了范围!"

            Return

        End If

        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 Not (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

        Me._OutString = tempOutString

        Me._Valiad = True

    End Sub
End Class

数字转成人民币大写代码 Public Function GetChinaNum(otherNum As Double, Optional isRMB As Boolean, Optional numOption As Boolean, Optional dotNum As Integer) As String On Error Resume Next num = Trim(Str(Int(otherNum))) If isRMB Then numwei = "拾佰仟万拾佰仟亿拾佰仟" numshu = "零壹贰叁肆伍陆柒捌玖拾" Else numwei = "十百千万十百千亿十百千" numshu = "零一二三四五六七八九十" End If If otherNum < 20 And otherNum >= 10 Then num = Right(num, 1) GetChinaNum = Left(numwei, 1) End If For i = 1 To Len(num) bstr = Mid(num, i, 1) If numOption Then GetChinaNum = GetChinaNum + Mid(numshu, Val(bstr) + 1, 1) Else GetChinaNum = GetChinaNum + Mid(numshu, Val(bstr) + 1, 1) If bstr = "0" Then If Mid(numwei, Len(num) - i, 1) = "万" Or Mid(numwei, Len(num) - i, 1) = "亿" Then Do While Right(GetChinaNum, 1) = "零" GetChinaNum = Left(GetChinaNum, Len(GetChinaNum) - 1) Loop GetChinaNum = GetChinaNum + Mid(numwei, Len(num) - i, 1) End If Else GetChinaNum = GetChinaNum + Mid(numwei, Len(num) - i, 1) End If GetChinaNum = Replace(GetChinaNum, "零零", "零") End If Next i If numOption = False Then Do While Right(GetChinaNum, 1) = "零" GetChinaNum = Left(GetChinaNum, Len(GetChinaNum) - 1) Loop End If If isRMB Then numrmb = "元角分" GetChinaNum = GetChinaNum + Mid(numrmb, 1, 1) If Val(num) <> otherNum Then num = Trim(Str(Round(otherNum - Val(num), 2))) For i = 2 To Len(num) bstr = Mid(num, i, 1) GetChinaNum = GetChinaNum + Mid(numshu, Val(bstr) + 1, 1) + Mid(numrmb, i, 1) Next i Else GetChinaNum = GetChinaNum + "整" End If Else If Val(num) <> otherNum Then If dotNum = 0 Then dotNum = 4 num = Trim(CStr(Round(otherNum - Val(num), dotNum))) If GetChinaNum = "" Then GetChinaNum = "零" GetChinaNum = GetChinaNum + "点" For i = 2 To Len(num) bstr = Mid(num, i, 1) GetChinaNum = GetChinaNum + Mid(numshu, Val(bstr) + 1, 1) Next i End If End If End Function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值