求剧情
算法的乐趣 · 第十四节

《算法的乐趣》第十四节

本节介绍中文数字与阿拉伯数字相互转换的算法。中文数字同为十进制,但用“数字+权位”直接表示,常用权位有十、百、千、万、亿等;现代不再使用“兆”及更大单位,改用“万亿”等堆叠方式。

本节介绍中文数字与阿拉伯数字相互转换的算法。中文数字同为十进制,但用“数字+权位”直接表示,常用权位有十、百、千、万、亿等;现代不再使用“兆”及更大单位,改用“万亿”等堆叠方式。中文计数以“万”为小节,小节内以十、百、千为权位独立计数,且十、百、千不能连续出现,而万、亿可与其他权位连用。中文的“零”有三条使用规则:小节结尾是0不用零;小节内两个非0数字之间要用零;小节千位是0时,若前一小节无其他数字则不用零,否则要用零。例如200001010200转为“二千亿零一百零一万零二百”。

阿拉伯数字转中文数字分两步:先以万为单位分节并确定节权位,再对每节内数字确定权位并按规则处理零。算法实现需解决三个问题:单个数字转换可用中文数字表按下标直接查取;节与权位的识别通过分节和移位次数查表完成,最低节权位用空字符串占位,便于统一处理;零的处理最复杂,需按三条规则判断,且连续的0只用一个零。实现时对数字反复对10000取模分节,用变量记录节位置以确定节权位,并用needZero变量结合循环处理千位为0时是否加零。

‹ 上一章目录下一章 ›

全部 76 章