欢迎来到天天文库
浏览记录
ID:33927515
大小:227.27 KB
页数:3页
时间:2019-03-01
《用c#实现中文大写金额转换》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、168福建电脑2010年第1期用C#实现中文大写金额转换王瑞勇(湖北国土资源职业学院机电工程系湖北荆州434100)【摘要】:结合财务管理的规范性和项目开发的实际需要,论述了中文大写金额转换的必要性,分析了转换应遵循的规律,给出了算法的实现代码,关用注释的方法给出各功能函数的具体算法,文章提出的算法在实际项目开发中有较强的参考价值。【关键词】:C#;大写金额;转换1.引言iffDouble.Parse(sir)>999999999999.99)retum”数字太大.无法换算。请输入一万亿元以下的金额”财务管理工作规定,汉字大写金额数字的
2、使用.不能随意书char廿ch=newchar[1];写。随着办公自动化的不断提高.应用程序中需要打印各式各样eh[O1=;l/d"数点的票据.如何在程序中把人民币由小写转换为财务管理规定的stringUsplitstr=null;,/定义按小数点分割后的字符串数组中文大写金额,是软件开发工作者经常要面对的任务虽然目前splitstr=sir.Split(ch【o]);『/按小数点分割字符串已有很多专门的转换函数.但大多算法复杂.且对于一些特殊的if(splitsU",knh==1),/只有整数部分数,转发换的结果有的不太准确。笔者结合
3、自己的实际开发经retumConvertData(slr1+’‘元整”;else//有小数部分验.用C#语言实现了一种算法简单.转换结果准确的大写金额l转换方法stringrslr;2.算法分析rslr=c0nvenData(sp】itstO】)+Il,;腊换整数部分小写金额到大写的转换.应遵循以一些规则.算法也就是要rstr+=convertxi8oshu(splitstrf1】);,/转换小数部分考虑到这些规则:(1)中文大写金额数字到”元”为止的.在”元”之后,应写”整n(或”正”)-7-,在”角”之后,可以不写”整”f或”正”1
4、字。大写金额】数字有”分”的,”分”后面不写”整”(或”正”1字。(2)判断待转换串是否为正数字字符串(2)中文大写金额数字前应标明”人民币”字样.大写金额数publicboolIsPositveDecimal(stringstr)字有”分”的,“分”后面不写”整”f或”正”)字。((3)中文大写金额数字前应标明”人民币”字样.大写金额数Decimald.try字应紧接”人民币”字样填写.不得留有空白大写金额数字前未{印”人民币”字样的,应加填”人民币”三字。在票据和结算凭证大d=Decima1.Parse(str);写金额栏内不得预印
5、固定的”仟、佰、拾、万、仟、佰、拾、元、角、分”字样。}(4)阿拉伯数字小写金额数字中有”0”时.中文大写应按照catch(Exception)f汉语语言规律、金额数字构成和防止涂改的要求进行书写。举例returnfalse;如下:】阿拉伯数字中间有⋯0’时.中文大写要写“零”字.~I~1409.iffd>0)5O.应写成人民币陆壹仟肆佰零玖元伍角returntrue;阿拉伯数字中间连续有几个”O”时.中文大写金额中间可以elsereturnfalse;只写一个”零”字,如¥6007.14.应写成人民币陆仟零柒元壹角肆}分。(3)整数部
6、分的转换函数阿拉伯金额数字万位和元位是”O”.或者数字中间连续有几publicstringconvertDatstringsir)个”O”,万位、元位也是nO”,但千位、角位不是”0一时。中文大写金{额中可以只写一个零字,也可以不写”零”字。~I~1680.32,应写stringtmpstr:⋯‘:成人民币壹仟陆佰捌拾元零叁角贰分.或者写成人民币壹仟陆stringrstr=⋯:intstrlen=sir.Length;佰捌拾元叁角贰分,又如~107000.53,应写成人民币壹拾万柒仟if(strlen<=4)数字长度小于四位元零伍角叁分
7、,或者写成人民币壹拾万零柒仟元伍角叁分。{阿拉伯金额数字角位是”0”.而分位不是”0”时.中文大写金rstr=C0nvertDIgjt(str);额”元”后面应写”零”字。~1~16409.02.应写成人民币壹万陆仟肆J佰零玖元零贰分;又~1~325.04.应写成人民币叁佰贰拾伍元零else肆分。{if(strlen<:8)//数字长度大于四位.小于八位3.算法实现I(1)转换数字金额的静态主函数(包括小数)tmpstr=str.Substring(sirlen一4,4);//先截取最后四位数字待转换的小写金额作为参数.返回的结果为大写
8、金额字符i-sir=ConvertDit0mps砷∥转换最后四位数字串。tmpstr=str.Substring(O,strlen一4);截取其余数字,,将两次转换的数字加上万后相连接publicstati
此文档下载收益归作者所有