网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  金额转换成中文大写            【字体:
金额转换成中文大写
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-2    
正在装载数据……

金额转换成中文大写

VB 版

'中文大写金额
Public Function CNmoney(number)
  Dim strnumber, strnumber1, tempnumber As String
  Dim i, lennumber As Integer
  If number = 0 Then CNmoney = "": GoTo zjkend  '如等于零则退出
  If Abs(number) >= 10000000000000# Or Abs(number) < 0.0051 Then _
      CNmoney = "数值溢出": GoTo zjkend   '如太大太小则显示错误
  If number < 0 Then CNmoney = "负"   '负数的处理
  strnumber = CStr(Round(Abs(number), 2))
  If InStr(strnumber, ".") <> 0 Then  '判断是否有小数部分
    strnumber1 = Mid(strnumber, InStr(strnumber, ".") + 1, 2) '小数部分
    strnumber = Left(strnumber, InStr(strnumber, ".") - 1)  '整数部分
  End If
  lennumber = Len(strnumber)
  '处理整数部分
  For i = lennumber To 1 Step -1  '开始循环,对每一个数进行转换及加上单位
    tempnumber = Mid(strnumber, lennumber + 1 - i, 1)
    If tempnumber = 0 And i <> 5 And i <> 9 And _
        Mid(strnumber, lennumber + 2 - i, 1) <> 0 And i <> 1 Then
      CNmoney = CNmoney + "零"  '对零的处理
      Else
      Select Case tempnumber  '对非零数进行转换
        Case 1
        CNmoney = CNmoney + "壹"
        Case 2
        CNmoney = CNmoney + "贰"
        Case 3
        CNmoney = CNmoney + "叁"
        Case 4
        CNmoney = CNmoney + "肆"
        Case 5
        CNmoney = CNmoney + "伍"
        Case 6
        CNmoney = CNmoney + "陆"
        Case 7
        CNmoney = CNmoney + "柒"
        Case 8
        CNmoney = CNmoney + "捌"
        Case 9
        CNmoney = CNmoney + "玖"
      End Select
    End If
    If tempnumber <> 0 Or i = 1 Or i = 9 Or _
        (i = 5 And Right(CNmoney, 1) <> "亿") Then
      Select Case i  '在适当的数位上加上单位
        Case 13
        CNmoney = CNmoney + "万"
        Case 12
        CNmoney = CNmoney + "仟"
        Case 11
        CNmoney = CNmoney + "佰"
        Case 10
        CNmoney = CNmoney + "拾"
        Case 9
        CNmoney = CNmoney + "亿"
        Case 8
        CNmoney = CNmoney + "仟"
        Case 7
        CNmoney = CNmoney + "佰"
        Case 6
        CNmoney = CNmoney + "拾"
        Case 5
        CNmoney = CNmoney + "万"
        Case 4
        CNmoney = CNmoney + "仟"
        Case 3
        CNmoney = CNmoney + "佰"
        Case 2
        CNmoney = CNmoney + "拾"
        Case 1
        CNmoney = CNmoney + "元"
      End Select
    End If
  Next i
  '处理小数部分
  If strnumber1 = "" Then
    CNmoney = CNmoney + "整"   '没小数的处理
    Else
    If Len(strnumber1) = 2 Then
    '处理有元角的小数
    tempnumber = Left(strnumber1, 1)
      If tempnumber = 0 And (CNmoney = "" Or CNmoney = "负") Then
        Else
        Select Case tempnumber
          Case 0
          CNmoney = CNmoney + "零"
          Case 1
          CNmoney = CNmoney + "壹角"
          Case 2
          CNmoney = CNmoney + "贰角"
          Case 3
          CNmoney = CNmoney + "叁角"
          Case 4
          CNmoney = CNmoney + "肆角"
          Case 5
          CNmoney = CNmoney + "伍角"
          Case 6
          CNmoney = CNmoney + "陆角"
          Case 7
          CNmoney = CNmoney + "柒角"
          Case 8
          CNmoney = CNmoney + "捌角"
          Case 9
          CNmoney = CNmoney + "玖角"
        End Select
      End If
      tempnumber = Right(strnumber1, 1)
      Select Case tempnumber
        Case 1
        CNmoney = CNmoney + "壹分"
        Case 2
        CNmoney = CNmoney + "贰分"
        Case 3
        CNmoney = CNmoney + "叁分"
        Case 4
        CNmoney = CNmoney + "肆分"
        Case 5
        CNmoney = CNmoney + "伍分"
        Case 6
        CNmoney = CNmoney + "陆分"
        Case 7
        CNmoney = CNmoney + "柒分"
        Case 8
        CNmoney = CNmoney + "捌分"
        Case 9
        CNmoney = CNmoney + "玖分"
      End Select
      Else
      '处理有元无角的小数
      Select Case strnumber1
        Case 1
        CNmoney = CNmoney + "壹角整"
        Case 2
        CNmoney = CNmoney + "贰角整"
        Case 3
        CNmoney = CNmoney + "叁角整"
        Case 4
        CNmoney = CNmoney + "肆角整"
        Case 5
        CNmoney = CNmoney + "伍角整"
        Case 6
        CNmoney = CNmoney + "陆角整"
        Case 7
        CNmoney = CNmoney + "柒角整"
        Case 8
        CNmoney = CNmoney + "捌角整"
        Case 9
        CNmoney = CNmoney + "玖角整"
      End Select
    End If
  End If
zjkend:
End Function[/code]

VB.NET 版
    Private Function ConvertMoney(ByVal Money As String) As String
      Dim my_cstr As String() = New String(9) {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}
               '定义数字转换
      Dim my_wstr As String() = New String(12) {"", "", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟"}
              ''定义金额单位转换
      Dim my_wstrdot As String() = New String(2) {"", "分", "角"}
      '定义金额单位转换
      Dim li_len As Integer = 0
      Dim li_i As Integer = 0
      Dim ls_dotMoney As String = String.Empty
      Dim ls_retstr As String = String.Empty
      Dim ls_tmp As String = String.Empty
       

       
        If Money.IndexOf(".") <> -1 Then '判断是否带小数点
            ls_dotMoney = ConvertDotMoney(Money.Substring(Money.IndexOf(".") + 1))
            ' ls_tmp = Money.Substring(0, Money.IndexOf("."))
            li_len = Money.Substring(0, Money.IndexOf(".")).Length '从开始的位置到有小数点时结束
        Else '无小数点
            li_len = Money.Length

        End If

        For li_i = 1 To li_len
            ls_tmp = Money.Substring(li_len - li_i, 1)
            ls_retstr = String.Concat(my_cstr(Int32.Parse(ls_tmp)) + my_wstr(li_i), ls_retstr)        
        Next

        If ls_retstr.Substring(ls_retstr.Length - 1, 1) = "零" Then _
            ls_retstr = ls_retstr.Substring(0, ls_retstr.Length - 1)

        ls_retstr = ls_retstr.Replace("零拾", "零")
        ls_retstr = ls_retstr.Replace("零佰", "零")
        ls_retstr = ls_retstr.Replace("零仟", "零")
        ls_retstr = ls_retstr.Replace("零萬", "萬")
        ls_retstr = ls_retstr.Replace("零零", "零")
        ls_retstr = ls_retstr.Replace("零萬", "零")
        ls_retstr = ls_retstr.Replace("零億", "億")
        ls_retstr = ls_retstr.Replace("零零", "零")

        If ls_retstr.Substring(0, 1) = "零" Then ls_retstr = ls_retstr.Substring(1)

        ls_retstr = ls_retstr + "元" + ls_dotMoney

        ConvertMoney = ls_retstr
        Return ConvertMoney
    End Function

    Private Function ConvertDotMoney(ByVal Money As String) As String  '处理小数点后面的部分数字
        Dim li_len As Integer = 0
        Dim li_i As Integer = 0
        Dim ls_tmp As String = ""
        Dim ls_retstr As String = ""
        If Money.IndexOf(".") <> -1 Then
            ls_retstr = "输入的金额有误!"
        Else
            li_len = Money.Length
        End If

        For li_i = 1 To li_len
            ls_tmp = Money.Substring(li_len - li_i, 1)
            ls_retstr = String.Concat(my_cstr(Int32.Parse(ls_tmp)) + my_wstrdot(li_i), ls_retstr)
        Next

        If ls_retstr.Substring(ls_retstr.Length - 1, 1) = "零" Then _
              ls_retstr = ls_retstr.Substring(0, ls_retstr.Length - 1)

 

        For li_i = 1 To 1
            ls_retstr.Replace("零分", "")
            ls_retstr.Replace("零角", "零")
            ls_retstr = ls_retstr.Replace("零零", "零")
        Next

        If ls_retstr.Substring(0, 1) = "零" Then ls_retstr.Substring(1)
        ls_retstr = ls_retstr + "整"
        ConvertDotMoney = ls_retstr
        Return ConvertDotMoney
    End Function
 




本文来源:http://blog.csdn.net/heimaoxiaozi/archive/2007/08/13/1740560.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • Sevrlet 中防止中文乱码策略

  • 解决JSP数据输入中文乱码问题

  • Turbo C 2.0 函数中文说明大…

  • LD中文使用手册完全版

  • 让irrlicht支持中文输入和输…

  • 将SQL语句转换为符合VB.NET格…

  • Delphi中的XML-RPC库 不支持…

  • Delphi日期转换函数的定义及…

  • Java编程中怎样实现中文排序

  • JSP 生成 HTML 整个 过程中的…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David