您的位置 首页 > 数码极客

2315如何翻译成我字

最近有个需求,要把一个整数用中文计数的形式展现出来。本喵第一反应就是看文档,接口有这个字段吗?答案是没有。

第二反应,就立马跑到我们高颜值的产品小姐姐跟前,在各种嘘寒问暖之后,终于切入正题,“你这么漂亮,让后端小哥哥帮忙加个字段呗,他一定能答应!”

“小哥哥说,你想多了,没这字段!还有,这是前端展示相关,逻辑不归老子写!!老子要改bug去了!!!”。

“那个小姐姐,这个你看这个需求能不能不这么……”

“不行,这是老板说要做的!”

既然你们都这样,那我只能拼老命打开了code editor,开始弹起了键盘。

可能你们会觉得奇怪,阿拉伯数字转汉字很难吗?汉字从零到兆,也就15个汉字而已,一一对应不就行了?大不了就是出现什么“五八万十六”这种扯淡的翻译呗……

言归正传,看看这几个数字吧:

10 十

100 一百

11 十一

101 一百零一

111 一百一十一

10101 一万零一百零一

10011001 一千零一万一千零一

这是需求里提到的翻译标准:

  • 最大到九千九百九十九万九千九百九十九亿九千九百九十九万九千九百九十九兆九千……,
  • “一十”开头的话,隐藏开头的“一”,
  • 在适当的时候要加上“零”,“一百一”这种是错误的。

最大那段就当没看到吧,反正最大量级到“兆”就对了。

话不多说,上代码:

const CN = [{base: 0, cn: '零'}, {base: 1, cn: '一'}, {base: 1, cn: '二'}, {base: 1, cn: '三'}, {base: 1, cn: '四'}, {base: 1, cn: '五'}, {base: 1, cn: '六'}, {base: 1, cn: '七'}, {base: 1, cn: '八'}, {base: 1, cn: '九'}, {base: 10, cn: '十'}, {base: 100, cn: '百'}, {base: 1000, cn: '千'}, {base: 10000, cn: '万'}, {base: 100000000, cn: '亿'}, {base: 10000000000000000, cn: '兆'}] Number. = function (i = CN.length - 1, emitLeadingOne = true) { if (this < 10) { return CN[this].cn } let a = Ma(this / CN[i].base) let b = this % CN[i].base let c = b.toCN(i - 1, emitLeadingOne && a == 0) if (a > 0) { let d = a.toCN() if (emitLeadingOne && i == 10 && a == 1) { d = '' } if (b > 0) { if (String(CN[i].base).length - String(b).length > 1) { return d + CN[i].cn + CN[0].cn + c } else { return d + CN[i].cn + c } } else { return d + CN[i].cn } } else { return c } }

真的很佩服自己,来试试结果吧:

完美!

本文代码可随意使用,文章转载请标明来源,谢谢!

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“2315如何翻译成我字”边界阅读