您现在的位置是:休闲 >>正文
大小写转换器人民币
休闲36321人已围观
简介把“壹佰贰拾叁元”扔进转换器,出来的结果多半是“123元”。反过来,输入“456元”,它给你“肆佰伍拾陆元”。这玩意儿看着简单,真动手写一个,坑比想象的多。 我最早做这个转换器,是因为帮财务的朋友核对 ...
把“壹佰贰拾叁元”扔进转换器,写转出来的换器结果多半是“123元”。反过来,人民输入“456元”,写转它给你“肆佰伍拾陆元”。换器这玩意儿看着简单,人民真动手写一个,写转坑比想象的换器多。
我最早做这个转换器,人民是写转因为帮财务的朋友核对一张报销单。她手工写了三十多张凭证,换器大写金额里混进了“贰”和“貳”、人民“叁”和“参”。写转银行退回来两张,换器说大写不规范。人民她盯着屏幕骂了一句:“就不能有个工具直接转吗?”网上确实有,但要么广告糊脸,要么把“零”的处理搞错——比如“1005元”,正确写法是“壹仟零伍元”,有些工具直接输出“壹仟零零伍元”,多一个零,整张凭证作废。
人民币大写规则不是随便定的。《正确填写票据和结算凭证的基本规定》里写得很死:金额到“元”为止的,后面写“整”或“正”;到“角”的,角后面可以不写“整”;有“分”的,分后面不写“整”。还有个容易翻车的点——阿拉伯数字中间有“0”时,中文大写要写“零”,连续几个“0”也只写一个“零”。比如“10,050元”,是“壹万零伍拾元”,不是“壹万零零伍拾元”。这些细节,写代码时得一条条对着规则抠。
我写第一版的时候,用了一个笨办法:把数字拆成“亿、万、仟、佰、拾、元、角、分”八个位置,逐位映射。结果“亿”和“万”同时出现时,零的处理直接崩了。比如“100,000,005元”,正确是“壹亿零伍元”,我的代码输出了“壹亿零零零零零伍元”。后来换成按“节”处理——每四位一节,节内单独转换,节间补零。这个思路清晰多了,代码量反而少了一半。
数字转大写还有个隐藏陷阱:口语和书面语的差异。有人觉得“二”和“两”可以混用,但人民币大写里,“2”在“元”位必须写“贰”,在“拾”位写“贰拾”,没有“两”什么事。“10”是“壹拾”,不是“拾”——虽然口语里都说“十块”,但凭证上少个“壹”,银行柜员能让你重填三遍。我见过一张支票,出票人写了“拾万元整”,被退回,理由是“拾”前面必须有“壹”。那人站在柜台前脸都绿了。
反过来,大写转小写也不省心。有人手写“叁仟元零角零分”,扫描识别时“零角零分”容易被误读成“零角零分”四个独立字符,转换器得判断哪些是冗余单位。更麻烦的是异体字——“圆”和“元”在票据上都合法,“肆”和“四”混用则不行。我现在的做法是建一个映射表,把常见异体字统一归到标准写法,再走解析逻辑。准确率上去了,但遇到手写潦草的“玖”和“玫”,还是得靠人工兜底。
这个小工具我前后改了七版。最近一版加了实时校验:输入“1234.56”,它一边输出“壹仟贰佰叁拾肆元伍角陆分”,一边在下面标红提示“分位后不加‘整’”。朋友拿去用,说比银行柜台的模板还细。其实哪有什么技术含量,就是把规则一条条拆开,再一条条拼回去。人民币大写转换器这东西,写起来像做手工——急不得,错一个笔画,整张单子就废了。
Tags:
上一篇:长沙seo公司
下一篇:mysql用什么可视化工具
相关文章
0day安全 软件漏洞分析技术
休闲2008年,一个叫“MS08-067”的漏洞震动了整个安全圈。攻击者只需要向目标Windows系统发送一段精心构造的RPC请求,就能在无需任何用户交互的情况下拿到系统控制权。这个漏洞被“暴风影音”播放 ...
【休闲】
阅读更多虚假app网络诈骗可以追回吗
休闲上周接到一个咨询电话,对方是个做小生意的中年男人,声音都在抖。他说自己下载了一个叫“某某税务”的APP,页面做得跟真的一模一样,填完银行卡信息和验证码,账户里八万块瞬间没了。他反复问我一句话:“这钱还 ...
【休闲】
阅读更多hackernet免费电脑版下载
休闲黑客网络Hackernet)这款工具在圈子里传了有些年头了。它不是什么商业化大厂作品,更像是一群技术爱好者攒出来的“瑞士军刀”——集成了端口扫描、弱口令检测、流量分析、WiFi审计等一堆功能。官网那个 ...
【休闲】
阅读更多