📄 目前代码行最少、bug最少的数字转汉字金额的函数.txt
字号:
[原创]目前代码行最少、Bug最少的数字转汉字金额的函数
//======================================================================
// Function: f_decimaltocn()
// Description: 将数字转化为汉字大写金额
//----------------------------------------------------------------------
// Arguments:
// decimal number 欲转换的数字,最大±1亿亿 - 0.01
// Returns: string 结果,如果超出范围,返回""
//----------------------------------------------------------------------
// Author: RJH Date: Apr 03,2004
//======================================================================
string CN_NUM[10] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"} // 大写0-9
string CN_CARRY[18] = {"分","角","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"}
string ls_number,ls_rc
integer li_pos,li_for,li_len
If number < 0 Then ls_rc = "负"
ls_number = string(ABS(Number) * 100,"0")
li_len = Len(ls_number)
If li_len > UpperBound(CN_CARRY) Then Return ''
For li_for = 1 To li_len
li_pos = Integer(Mid(ls_number,li_for,1))
If li_pos <> 0 Then //// 非零值的处理,很简单
ls_rc += CN_NUM[li_pos + 1] + CN_CARRY[li_len - li_for + 1]
ElseIf Mod(li_len - li_for - 2,4) = 0 Then ///元、万、亿、万亿进位
If Right(ls_rc,2) = CN_NUM[1] Then ls_rc = Left(ls_rc,Len(ls_rc) - 2)
If li_len - li_for <> 6 Or Right(ls_rc,2) <> "亿" Then ls_rc += CN_CARRY[li_len - li_for + 1]
ls_rc += CN_NUM[1]
ElseIf Right(ls_rc,2) <> CN_NUM[1] Then
ls_rc += CN_NUM[1]
End If
Next
If Right(ls_rc,2) = CN_NUM[1] Then ls_rc = Left(ls_rc,Len(ls_rc) - 2)
If Right(ls_rc,2) = "元" Then ls_rc += "整"
Return ls_rc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -