数字转中文与中文转数字

把 1234.56 写成「一千二百三十四点五六」或「壹仟贰佰叁拾肆点伍陆」,反过来把中文数字还原成阿拉伯数字也可以。

支持千分位逗号、全角数字和负号。整数最多 16 位,小数最多 8 位。

零怎么读

中文数字里最麻烦的是零。规则可以归纳成三类:位与位之间有空缺时读一个零,比如 105 是一百零五、1001 是一千零一;连续多位空缺只读一个零,比如 10001 是一万零一,不是一万零零零一;末尾的零一律不读,比如 1200 是一千二百,不读「一千二百零零」。

四位一级之间的零要特别注意:1000001 是一百万零一,中间那一组 0000 只贡献一个零;而 1000000 是一百万,末尾的零不读。这也是为什么从数字直接读中文容易出错,位值和零要一起看。

十和一十

小写习惯把开头的「一十」写成「十」:10 读「十」,12 读「十二」;但出现在中间时不省略,110 读「一百一十」。大写没有这个省略,票据上一律写「壹拾」「壹拾贰」,位数看得更清楚,也更难涂改。这也是大写金额要写成「壹佰贰拾叁元整」的原因。

和人民币大写的区别

这里处理的是数字本身,不涉及货币。票据和发票上的金额写法还有额外规范:要用「元」「角」「分」,整数金额补「整」,元位是零、角位不是零时不补那个可写可不写的零。这些规则在「人民币大写」页里单独处理,需要填金额的场合用那一页。

反过来读要注意什么

中文数字转阿拉伯数字的歧义主要来自口语省略。「一万二」口语指 12000,「一万零二」才是 10002,本页按前者处理;「三千五」是 3500,「五百二十」是 520。逐位读法(常见于年份和电话号码)也认,二〇二六会还原成 2026。如果原文本身有歧义,最好补一个零再转。

位数超过 16 位的整数已经超出双精度浮点数的精确范围,本页会直接提示而不是给一个末尾数字不对的结果。真要处理更大的数,得用专门的大数库。