转中文大写金额

该文章详细描述了一个VBScript函数,用于将十进制金额转换为中文货币形式,包括整数部分和小数部分的处理,以及单位(如零、壹、拾、佰等)的插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  Function ConvertToChineseCurrency(amount As Decimal) As String
      ' 定义中文数字和单位  
      Dim chineseNumbers() As String = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}
      Dim chineseUnitsSmall() As String = {"", "拾", "佰", "仟"}
      Dim chineseUnitsBig() As String = {"", "万", "亿", "兆"}
      Dim chineseDecimalUnits() As String = {"角", "分"}

      ' 转换金额为字符串并处理小数部分  
      Dim amountStr As String = amount.ToString("0.00")
      Dim integerPartStr As String = amountStr.Split(".")(0)
      Dim decimalPartStr As String = amountStr.Split(".")(1)

      ' 初始化结果字符串  
      Dim result As New StringBuilder()

      ' 处理整数部分  
      Dim zeroCount As Integer = 0 ' 连续零的计数  
      For i As Integer = integerPartStr.Length - 1 To 0 Step -1
          Dim digitIndex As Integer = Integer.Parse(integerPartStr.Substring(i, 1))
          If digitIndex > 0 Then
              ' 添加非零数字及其单位  
              result.Insert(0, chineseNumbers(digitIndex) + chineseUnitsSmall((integerPartStr.Length - 1 - i) Mod 4))
              zeroCount = 0 ' 重置连续零的计数  
          Else
              zeroCount += 1 ' 增加连续零的计数  
          End If

          ' 添加大单位(万、亿等)  
          If (integerPartStr.Length - i) Mod 4 = 0 AndAlso i > 0 Then
              result.Insert(0, chineseUnitsBig((integerPartStr.Length - i - 1) \ 4))
          End If
      Next

      ' 处理结果字符串开头的零  
      While result.Length > 0 AndAlso result(0) = chineseNumbers(0)
          result.Remove(0, 1)
      End While

      ' 添加“元”  
      If result.Length > 0 Then
          result.Append("元")
      Else
          result.Append("零元")
      End If

      ' 处理小数部分  
      If decimalPartStr <> "00" Then
          For i As Integer = 0 To 1
              Dim digitIndex As Integer = Integer.Parse(decimalPartStr.Substring(i, 1))
              If digitIndex > 0 Then
                  result.Append(chineseNumbers(digitIndex) + chineseDecimalUnits(i))
              End If
          Next
      Else
          result.Append("整") ' 如果小数部分为0,则加“整”字  
      End If

      Return result.ToString()
  End Function

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rrokoko

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值