人民币大写元还是圆160456914大写

最简洁的“人民币金额大写”方法
最简洁的“人民币金额大写”方法
来源:极客头条
摘自《31天学会CRM项目开发》
这是一项经典编程题,笔者也曾将此题作为面试题。
人民币大写金额用到的汉字主要包括零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿等。人民币大写金额有如下注意事项:
中文大写金额数字到“元”为止的,在“元”之后、应写“整”(或“正”)字;在“角”之后,可以不写“整”(或“正”)字;大写金额数字有“分”的,“分”后面不写“整”(或“正”)字。
阿拉伯数字中间有“0”时,中文大写要写“零”字,如¥1308.6应写成壹仟叁佰零捌元陆角;
阿拉伯数字中间连续有几个“0”时、中文大写金额中间可以只写一个“零”字,如¥9006.24应写成玖仟零陆元贰角肆分。
阿拉伯金额数字中间连续有几个“0”时,中文大写金额仅写一个零,如?10001,应写成一万零一。
阿拉伯金额数字角位是“0”而分位不是“0”时,中文大写金额“元”后面应写“零”字。
如片段9-20所示,主要步骤如下:
取得整数和小数部分
对整数部分进行反转,依次从个位数起添加数量单位
将阿拉伯数字替换成大写数字
替换不符合汉语规律的词汇,例如仟佰、零佰、零拾等
代码片段9-20
private string ConvertToChinese(double dou)
// 大写数字数组
string[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
// 数量单位数组,个位数为空
string[] unit = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆" };
string d = dou.ToString();
string zs = string.E// 整数
string xs = string.E// 小数
int i = d.IndexOf(".");
string str = string.E
if (i > -1)
// 仅考虑两位小数
zs = d.Substring(0, i);
xs = d.Substring(i + 1, d.Length - i - 1);
str = "元";
if (xs.Length == 1)
str = str + xs + "角";
else if (xs.Length == 2)
str = str + xs.Substring(0, 1) + "角" + xs.Substring(1, 1) + "分";
str = "元整";
// 处理整数部分
if (!string.IsNullOrEmpty(zs))
// 从整数部分个位数起逐一添加单位
foreach (char s in zs.Reverse())
str = s.ToString() + unit[i] +
// 将阿拉伯数字替换成中文大写数字
for (int m = 0; m < 10; m++)
str = str.Replace(m.ToString(), num[m]);
// 替换零佰、零仟、零拾之类的字符
str = Regex.Replace(str, "[零]+仟", "零");
str = Regex.Replace(str, "[零]+佰", "零");
str = Regex.Replace(str, "[零]+拾", "零");
str = Regex.Replace(str, "[零]+亿", "亿");
str = Regex.Replace(str, "[零]+万", "万");
str = Regex.Replace(str, "[零]+", "零");
str = Regex.Replace(str, "亿[万|仟|佰|拾]+", "亿");
str = Regex.Replace(str, "万[仟|佰|拾]+", "万");
str = Regex.Replace(str, "仟[佰|拾]+", "仟");
str = Regex.Replace(str, "佰拾", "佰");
str = Regex.Replace(str, "[零]+元整", "元整");
使用正则表达式,如片段9-21所示,来源于网络,相比常规方法,显得非常简洁,足以展示正则表达式的强大,也体现了程序设计者深厚技术功底。由于无法查证这段代码的原作者,此处无法标注原作者姓名和出处。
代码片段9-21
string s =
dou.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
string d = Regex.Replace(s,
@"((? RMB[m.Value[0] - '-'].ToString());
if (r.EndsWith("元"))
r = r + "整";
行6,“m.Value[0] - '-'”是两个char字符相减,char字符相减会升级为int型,相当于“(int)m.Value[0] – (int)'-'”,即使用char字符所对应的ASCII码值相减。
行6,符号“=>” 称作Lambda 表达式,是一种可用于创建委托或表达式目录树类型的匿名函数。通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。若要创建 Lambda 表达式,需要在 Lambda 运算符 => 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。 例如,lambda 表达式 x => x * x 指定名为 x 的参数并返回 x 的平方值。
行6可改写成如片段9-22形式。
代码片段9-22
string value = Regex.Replace(d, ".",
delegate(Match m){ return RMB[m.Value[0] - '-'].ToString(); });片段9-22还可写成片段9-23、9-24形式,这样更容易理解。
代码片段9-23
string r = Regex.Replace(d, ".", new MatchEvaluator(GetChinese));
代码片段9-24
private string GetChinese(Match m)
string RMB = "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰";
return RMB[m.Value[0] - '-'].ToString();
}方法一属于常规思路,一般人都会这么考虑,方法二,打破常规,非正则不“娶”,充分体现了程序设计者对代码简洁苛刻的追求。方法一虽然代码比较长,但也有优点,它还适用于Java、JavaScript、PHP等其他编程语言。
我的同类文章
C#.NET(27)
31天学会CRM项目开发(4)
即使是一小步也想与你分享人民币大写标准_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
人民币大写标准
&&人民币大写标准
你可能喜欢人民币大写全部_百度知道
该问题可能描述不清,建议你
人民币大写全部
我有更好的答案
中文大写金额数字应用正楷或行书填写,如壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等字样,不得用一、二(两)、三、四、五、六、七、八、九、十、毛、另(或0)填写,不得自造简化字。如果金额数字书写中使用繁体字,如贰、陆、亿、万、圆的,也应受理。人民币大写的正确写法还应注意以下几项:一、中文大写金额数字到“元”为止的,在“元”之后、应写“整”(或“正”)字;在“角”之后,可以不写“整”(或“正”)字;大写金额数字有“分”的,“分”后面写“整”(或“正”)字。二、中文大写金额数字前应标明“人民币”字样,大写金额数字应紧接“人民币”字样填写,不得留有空白。大写金额数字前未印“人民币”字样的,应加填“人民币”三字,在票据和结算凭证大写金额栏内不得预印固定的“仟、佰、拾、万、仟、佰、拾、元、角、分”字样。三、阿拉伯数字小写金额数字中有“0”时,中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。举例如下:1、阿拉伯数字中间有“0”时,中文大写要写“零”字,如¥1409.50应写成人民币壹仟肆佰零玖元伍角;2、阿拉伯数字中间连续有几个“0”时、中文大写金额中间可以只写一个“零”字,如¥6007.14应写成人民币陆仟零柒元壹角肆分。3、阿拉伯金额数字万位和元位是“0”,或者数字中间连续有几个“0”,万位、元位也是“0”但千位、角位不是“0”时,中文大写金额中可以只写一个零字,也可以不写“零”字,如¥1680.32应写成人民币壹仟陆佰捌拾元零叁角贰分,或者写成人民币壹仟陆佰捌拾元叁角贰分。又如¥应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分。4、阿拉伯金额数字角位是“0”而分位不是“0”时,中文大写金额“元”后面应写“零”字,如¥16409.02应写成人民币壹万陆仟肆佰零玖元零贰分,又如¥325.04应写成人民币叁佰贰拾伍元零肆分。四、阿拉伯小写金额数字前面均应填写人民币符号“¥”,阿拉伯小写金额数字要认真填写,不得连写分辨不清。五、票据的出票日期必须使用中文大写,为防止变造票据的出票日期,在填写月、日时、月为壹、贰和壹拾的,日为壹至玖和壹拾、贰拾和叁拾的,应在其前加“零”,日为拾壹至拾玖的应在其前加“壹”,如1月15日应写成零壹月壹拾伍日,再如10月20日应写成零壹拾月零贰拾日。六、票据出票日期使用小写填写的,银行不予受理;大写日期未按要求规范填写的,银行可予受理,但由此造成损失的由出票人自行承担。
本回答被网友采纳
壹佰圆,伍拾圆。贰拾圆,拾元,伍圆,贰圆。壹圆。伍角
人民币的大写:RMB
其他1条回答
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。人民币大写规范_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
人民币大写规范
&&填写转帐支票须知
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢人民币137088大写怎样写_百度知道
人民币137088大写怎样写
人民币137088大写怎样写
我有更好的答案
壹拾叁万柒仟零捌拾捌元整大写金额数字应用正楷或行书填写,如壹(壹)、贰(贰)、叁、肆(肆)、伍(伍)、陆(陆)、柒、捌、玖、拾、佰、仟、万(万)、亿、元、角、分、零、整(正)等字样。不得用一、二(两)、三、四、五、六、七、八、九、十、念、毛、另(或0)填写,不得自造简化字。
采纳率:90%
来自团队:
壹拾叁万柒仟零捌拾捌元整
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 人民币大写元还是圆 的文章

 

随机推荐