阿拉伯数字与中文数字没有一一对应关系,不存在直接转换的公式化算法,因此需要根据两种数字体系的特点精心构造转换算法。
中文计数有一个特点,就是“零”的使用变化多端。阿拉伯数字中数字的权位依靠数字在整个数字长度中的偏移位置确定,因此数字中间出现的0用于标记数字的偏移位置,即便是连续出现的0也不能省略。中文计数方式中每个数字的权位都直接跟在数字后面,因此代表连续出现的若干个0。
尽管如此,也不是所有的情况都使用“零”,比如阿拉伯数字 20001234,中文数字表示为“二千万一千二百三十四”,没有用一个“零”;再比如阿拉伯数字 12000,中文数字表示为“一万二千”,也没有用“零”;但是对于阿拉伯数字 10210300,中文数字表示为“一千零二十一万零三百”,两次出现“零”。
针对这种情况,中文数字对“零”的使用总结起来有以下三条规则:
以 10000 为小节,小节的结尾即使是 0,也不使用“零”。
小节内两个非 0 数字之间要使用“零”。
当小节的“千”位是 0 时,若本小节的前一小节无其他数字,则不用“零”,否则就要用“零”。
从阿拉伯数字到中文数字的转换,第一步是以“万”为单位分节,并确定节权位。第二步是对每小节内的数字确定权位,并按照前面的三种方法处理“零”的问题:
一个转换示例
以阿拉伯数字 200001010200 为例,首先以“万”为单位对其分节,可分为三节:2000 0101 0200:
第一节 2000,节权位是“亿”,因为这一节的 0 都在结尾,根据规则