您现在的位置是:休闲 >>正文

大小写转换器人民币

休闲36321人已围观

简介把“壹佰贰拾叁元”扔进转换器,出来的结果多半是“123元”。反过来,输入“456元”,它给你“肆佰伍拾陆元”。这玩意儿看着简单,真动手写一个,坑比想象的多。 我最早做这个转换器,是因为帮财务的朋友核对 ...

把“壹佰贰拾叁元”扔进转换器,写转出来的换器结果多半是“123元”。反过来,人民输入“456元”,写转它给你“肆佰伍拾陆元”。换器这玩意儿看着简单,人民真动手写一个,写转坑比想象的换器多。

我最早做这个转换器,人民是写转因为帮财务的朋友核对一张报销单。她手工写了三十多张凭证,换器大写金额里混进了“贰”和“貳”、人民“叁”和“参”。写转银行退回来两张,换器说大写不规范。人民她盯着屏幕骂了一句:“就不能有个工具直接转吗?”网上确实有,但要么广告糊脸,要么把“零”的处理搞错——比如“1005元”,正确写法是“壹仟零伍元”,有些工具直接输出“壹仟零零伍元”,多一个零,整张凭证作废。

人民币大写规则不是随便定的。《正确填写票据和结算凭证的基本规定》里写得很死:金额到“元”为止的,后面写“整”或“正”;到“角”的,角后面可以不写“整”;有“分”的,分后面不写“整”。还有个容易翻车的点——阿拉伯数字中间有“0”时,中文大写要写“零”,连续几个“0”也只写一个“零”。比如“10,050元”,是“壹万零伍拾元”,不是“壹万零零伍拾元”。这些细节,写代码时得一条条对着规则抠。

我写第一版的时候,用了一个笨办法:把数字拆成“亿、万、仟、佰、拾、元、角、分”八个位置,逐位映射。结果“亿”和“万”同时出现时,零的处理直接崩了。比如“100,000,005元”,正确是“壹亿零伍元”,我的代码输出了“壹亿零零零零零伍元”。后来换成按“节”处理——每四位一节,节内单独转换,节间补零。这个思路清晰多了,代码量反而少了一半。

数字转大写还有个隐藏陷阱:口语和书面语的差异。有人觉得“二”和“两”可以混用,但人民币大写里,“2”在“元”位必须写“贰”,在“拾”位写“贰拾”,没有“两”什么事。“10”是“壹拾”,不是“拾”——虽然口语里都说“十块”,但凭证上少个“壹”,银行柜员能让你重填三遍。我见过一张支票,出票人写了“拾万元整”,被退回,理由是“拾”前面必须有“壹”。那人站在柜台前脸都绿了。

反过来,大写转小写也不省心。有人手写“叁仟元零角零分”,扫描识别时“零角零分”容易被误读成“零角零分”四个独立字符,转换器得判断哪些是冗余单位。更麻烦的是异体字——“圆”和“元”在票据上都合法,“肆”和“四”混用则不行。我现在的做法是建一个映射表,把常见异体字统一归到标准写法,再走解析逻辑。准确率上去了,但遇到手写潦草的“玖”和“玫”,还是得靠人工兜底。

这个小工具我前后改了七版。最近一版加了实时校验:输入“1234.56”,它一边输出“壹仟贰佰叁拾肆元伍角陆分”,一边在下面标红提示“分位后不加‘整’”。朋友拿去用,说比银行柜台的模板还细。其实哪有什么技术含量,就是把规则一条条拆开,再一条条拼回去。人民币大写转换器这东西,写起来像做手工——急不得,错一个笔画,整张单子就废了。

Tags:

相关文章

  • 0day安全 软件漏洞分析技术

    休闲

    2008年,一个叫“MS08-067”的漏洞震动了整个安全圈。攻击者只需要向目标Windows系统发送一段精心构造的RPC请求,就能在无需任何用户交互的情况下拿到系统控制权。这个漏洞被“暴风影音”播放 ...

    【休闲】

    阅读更多
  • 虚假app网络诈骗可以追回吗

    休闲

    上周接到一个咨询电话,对方是个做小生意的中年男人,声音都在抖。他说自己下载了一个叫“某某税务”的APP,页面做得跟真的一模一样,填完银行卡信息和验证码,账户里八万块瞬间没了。他反复问我一句话:“这钱还 ...

    【休闲】

    阅读更多
  • hackernet免费电脑版下载

    休闲

    黑客网络Hackernet)这款工具在圈子里传了有些年头了。它不是什么商业化大厂作品,更像是一群技术爱好者攒出来的“瑞士军刀”——集成了端口扫描、弱口令检测、流量分析、WiFi审计等一堆功能。官网那个 ...

    【休闲】

    阅读更多


友情链接