mysql,Linux,HighPerformance,ruby on Rails

2010年2月27日星期六

小写金额转换为大写金额(Ruby实现)

这个题目已经被无数人写过,网上有Ruby版,有Javascript版,有Python版,有JAVA版。但我看到的即没有测试也没有图例,能看的清晰的不多。
这不,我也凑凑热闹,写一版,方便大家对比指正。

我从网上整理的条件:
一、中文大写金额数字应用正楷或行书填写,如壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样。
二、 中文大写金额数字到"元"为止的,在"元"之后,应写"整"字,在"角"之后可以不写"整"字。数字有"分"的,"分"后面不写"整"字。
三、阿拉伯小写金额数字中有"0"时,中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。举例如下:
    (一)阿拉伯数字中间有"0"时,中文大写金额要写"零"字。如¥1,409.50,应写成人民币壹仟肆佰零玖元伍角。
    (二)阿拉伯数字中间连续有几个"0"时,中文大写金额中间可以只写一个"零"字。如¥6,007.14,应写成人民币陆仟零柒元壹角肆分。
    (三)阿拉伯金额数字万位或元位是"0",或者数字中间连续有几个"0",万位、元位也是"0",但千位、角位不是"0"时,中文大写金额中可以只写一个零字,也可以不写"零"字。如¥1,680.32,应写成人民币壹仟陆佰捌拾元零叁角贰分,或者写成人民币壹仟陆佰捌拾元叁角贰分;又如¥107,000.53,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分。
    (四)阿拉伯金额数字角位是"0",而分位不是"0"时,中文大写金额"元"后面应写"零"字。如¥16,409.02,应写成人民币壹万陆仟肆佰零玖元零贰分;又如¥325.04,应写成人民币叁佰贰拾伍元零肆分。

 写的图例在上面,你可以看。

代码在这里:两个文件:
chinesedecimal.rb
http://gist.github.com/316775

testhelpers.rb
http://gist.github.com/316780

你只要把上面两个文件贴到你的记事件成为对应的文件名,在命令行下键入ruby chinesedecimal.rb即可跑出结果。
因为有测试,所以我很放心这样的结果。即使有错误,我也可以通过测试样例去解决。这就是最简单的unit test过程了。

__DONE__

--
tommy xiao
E-mail: xiaods(AT)gmail.com

没有评论:

发表评论