程序员笔试题- 将人民币金额转换成大写的金额
提供两种方法:
//////////////////////////////////////////////////////////////////////
//将钱数转化为大写
//////////////////////////////////////////////////////////////////////
constant string ls_bit = "万仟佰拾亿仟佰拾万仟佰拾元角分"
constant string ls_num = "壹贰叁肆伍陆柒捌玖"
long lmax = len( ls_bit ) + 1
string ls_je, ls_dw, ls_result = ''''
long ll_len, i, k
ls_je = string( data, "#############.00" )
ll_len = len( ls_je ) - 1
ls_je = replace( ls_je, ll_len - 1, 1, '''' )
for i = ll_len to 1 step -1
lmax -= 2
ls_dw = mid( ls_bit, lmax, 2 )
k = long( mid( ls_je, i, 1 ) )
if k = 0 then
choose case ls_dw
case ''元'',''万'',''亿''
ls_result = ls_dw + ls_result
case ''分''
ls_result = ''整''
case ''角''
if ls_result <> ''整'' then ls_result = ''零'' + ls_result
case else
choose case left( ls_result, 2 )
case ''万'', ''亿'', ''元'', ''零''
case else
ls_result = ''零'' + ls_result
end choose
end choose
else
ls_result = mid( ls_num, k * 2 - 1, 2 ) + ls_dw + ls_result
end if
next
return ls_result
--------------------------------------------------------
//入口参数:DECIMAL numb
INTEGER i //循环变量
STRING s_numb //以字符串表示
STRING s_money
INTEGER i1
s_numb = String(numb,"########.00")
IF Len(s_numb) < 11 THEN s_numb = Space(11-len(s_numb))+s_numb
i = 1
s_money = ""
//去掉前导空格
DO WHILE i<8 AND Mid(s_numb,i,1) = " "
i ++
LOOP
i1 = 11 - i + 1
INTEGER digit
DO WHILE i<=4
digit = Integer(Mid(s_numb,i,1))
IF digit = 0 THEN
DO WHILE i<=4
digit = Integer(Mid(s_numb,i,1))
IF digit <>0 THEN exit
i ++
LOOP
IF i<=4 THEN s_money += "零"
ELSE
s_money += Mid("壹贰叁肆伍陆柒捌玖",digit*2-1,2) +&
Mid("仟佰拾万",i*2-1,2)
i ++
END IF
LOOP
IF i1 >= 8 THEN
IF Integer(Mid(s_numb,4,1)) = 0 THEN s_money += "万"
END IF
DO WHILE i<=8
digit = Integer(Mid(s_numb,i,1))
IF digit = 0 THEN
DO WHILE i<=8
digit = Integer(Mid(s_numb,i,1))
IF digit<>0 THEN exit
i ++
LOOP
IF i<=8 THEN
s_money += "零"
ELSE
IF Integer(Mid(s_numb,1,8)) <> 0 THEN
s_money += "元"
IF Integer(Mid(s_numb,11,1))<>0 THEN s_money += "零"
END IF
END IF
END IF
IF digit <> 0 THEN
s_money += Mid("壹贰叁肆伍陆柒捌玖",digit*2-1,2) + &
Mid("仟佰拾万仟佰拾元",i*2-1,2)
END IF
i ++
LOOP
digit = Integer(Mid(s_numb,10,1))
IF digit<>0 THEN
s_money += Mid("壹贰叁肆伍陆柒捌玖",digit*2-1,2) + "角"
ELSE
IF Integer(Mid(s_numb,11,1))<>0 AND Integer(Mid(s_numb,1,9)) <> 0 THEN
s_money += "零"
END IF
END IF
digit = Integer(Mid(s_numb,11,1))
IF digit <> 0 THEN
s_money += Mid("壹贰叁肆伍陆柒捌玖",digit*2-1,2) + "分"
ELSE
IF Len(Trim(s_money)) <> 0 THEN s_money += "整"
END IF
RETURN s_money
出处: http://www.cnblogs.com/ywqu
如果你认为此文章有用,请点击底端的【推荐】让其他人也了解此文章,
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述