数字转汉语读法的方法设计(C#)

有时候我们需要把数字用汉语读出来,比如1234读成“一千二百三十四”,这里我用C#设计了一个方法,以完成这一目的,思路有点新颖,网上找了很多此类例子,都不是我今天给大家介绍的方法。

 

用汉语去读一个数,最后的字符串所有元素肯定在以下两个Char[]元素组成的集合里:

 

 

对应的也有繁体中文版本:

 

 

从总体上,我考虑把一个数转换成一个Char[],然后根据他所在的位置填补上“十”“百”“千”“万”“亿”。

 

由数学归纳法可以证明得:(K>=0,第0位亦即个位作为特殊位置)

“十”出现在:4k+1的位置上,

“百”出现在:4k+2的位置上,

“千”出现在:4k+3的位置上,

“万”出现在:8k+8的位置上,

“亿”出现在:8k+4的位置上.

 

可以证明这五个集合互不相交,并且可以证明可以涵盖所有自然数(8k,8k+1=4*2k+1...,再补上0),这里不去探讨证明的详细过程。

 

至此,这个方法的大题思路已经清晰,并且在理论上也得到了可行性的证明。

 

剩下的是一些细节:

 

1.连续出现的0

2."万"和"亿"冲突的问题

 

这些不便在这里详细说明,代码中已经给出解决方法。

 

下面给出代码:

 

 

 

 

 

 

测试代码:

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值