今天心情不好,共享原代码

zdm1999 2003-03-02 04:14:10
'功能:将小写金额转换成大写金额
'环境:vb6.0下测试能通过

Private Const NUM_UNIT = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟" '单位
Private Const NUM_VALUE = "零壹贰叁肆伍陆柒捌玖" '十个大写
Private Const HEAD_LABEL = "¥ " '字串的头部字符


'参数说明:doubleCurrNum 需转化的数值
' strErrInfo 返回错误信息
'     blnDisplayZero 是否要显示零 如:(显示零)壹佰 零拾 叁元 伍角 伍分 True 显示 False 不显示 默认值为Ture
' intSpaceNum 字符间的空格数,默认值为0
'返回值 :转换成功返回转换后的大写金额,转换失败返回vbNullString
Public Function CaseMoney(ByVal doubleCurrNum As Double, ByRef strErrInfo As String, Optional ByVal blnDisplayZero As Boolean = True, Optional ByVal intSpaceNum As Integer = 0) As String
Dim strTmp As String
Dim intI As Integer
Dim strRet As String

On Error GoTo CaseEnd

CaseMoney = vbNullString '初始化函数返回值

strTmp = Format(doubleCurrNum, "0.00") '格式化数值
strTmp = Left(strTmp, Len(strTmp) - 3) & Right(strTmp, 2) '去掉小数点

If Len(strTmp) > 18 Then
strErrInfo = "数值位数太多,不能处理!"
GoTo CaseEnd
End If

strRet = HEAD_LABEL

For intI = Len(strTmp) To 1 Step -1
If Not blnDisplayZero And intI > 2 And Asc(Mid(strTmp, Len(strTmp) - intI + 1, 1)) - 48 = 0 Then '是否显示零
Else
strRet = strRet & Mid(NUM_VALUE, Asc(Mid(strTmp, Len(strTmp) - intI + 1, 1)) - 48 + 1, 1) '取大写
strRet = strRet & Mid(NUM_UNIT, intI, 1) '取单位
strRet = strRet & Space(intSpaceNum) '取字符间空格数
End If
Next

CaseMoney = strRet

CaseEnd:
End Function
...全文
55 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixingyuaaa 2003-03-02
  • 打赏
  • 举报
回复
试试先

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧