数字转中文工具
阿拉伯数字转中文小写、大写、人民币金额、年份读法与序数词,支持批量与万亿级数值。
隐私安全:所有处理均在您的浏览器本地完成,数据绝不上传即时转换
支持千分位逗号(1,000)、货币符号(¥)、全角数字与正负号;小数与超长整数均可。
—
批量转换
每行一个数字,空行自动忽略。结果可逐行复制,或以制表符分隔复制全部。
| 输入 | 规范化 | 转换结果 | 操作 |
|---|
暂无内容,请在上方输入数字。
内置边界用例自检
通过 30 / 30以下 30 条为中文数词经典边界(含「零」规则、金额规范、年份与序数), 列出期望值与实际输出,可作为转换规则的可视化回归参考。
| 说明 | 输入 | 模式 | 期望输出 | 实际输出 |
|---|---|---|---|---|
| 零 | 0 | 普通·小写 | 零 | 零 |
| 十 | 10 | 普通·小写 | 十 | 十 |
| 十五 | 15 | 普通·小写 | 十五 | 十五 |
| 百位零合并 | 105 | 普通·小写 | 一百零五 | 一百零五 |
| 一百一十 | 110 | 普通·小写 | 一百一十 | 一百一十 |
| 节尾零不读 | 1200 | 普通·小写 | 一千二百 | 一千二百 |
| 千位零 | 1001 | 普通·小写 | 一千零一 | 一千零一 |
| 万节补零 | 10001 | 普通·小写 | 一万零一 | 一万零一 |
| 百万零一 | 1000001 | 普通·小写 | 一百万零一 | 一百万零一 |
| 一百万零一百 | 1000100 | 普通·小写 | 一百万零一百 | 一百万零一百 |
| 一亿零二十万 | 100200000 | 普通·小写 | 一亿零二十万 | 一亿零二十万 |
| 整亿不读万节 | 100000000 | 普通·小写 | 一亿 | 一亿 |
| 一亿零一 | 100000001 | 普通·小写 | 一亿零一 | 一亿零一 |
| 一亿零一十 | 100000010 | 普通·小写 | 一亿零一十 | 一亿零一十 |
| 负数 | -5 | 普通·小写 | 负五 | 负五 |
| 小数 | 3.14 | 普通·小写 | 三点一四 | 三点一四 |
| 小数中的零 | 10.04 | 普通·小写 | 十点零四 | 十点零四 |
| 大写写法 | 105 | 普通·大写 | 壹佰零伍 | 壹佰零伍 |
| 大写十 | 10 | 普通·大写 | 壹拾 | 壹拾 |
| 万亿级 | 1234567890123456 | 普通·小写 | 一千二百三十四兆五千六百七十八亿九千零一十二万三千四百五十六 | 一千二百三十四兆五千六百七十八亿九千零一十二万三千四百五十六 |
| 金额(元角分) | 1234.56 | 金额·小写 | 壹仟贰佰叁拾肆元伍角陆分 | 壹仟贰佰叁拾肆元伍角陆分 |
| 金额(元整) | 1234 | 金额·小写 | 壹仟贰佰叁拾肆元整 | 壹仟贰佰叁拾肆元整 |
| 金额(有分无角) | 10001.05 | 金额·小写 | 壹万零壹元零伍分 | 壹万零壹元零伍分 |
| 金额(角为零) | 0.04 | 金额·小写 | 零元零肆分 | 零元零肆分 |
| 金额(进位到分) | 1234.567 | 金额·小写 | 壹仟贰佰叁拾肆元伍角柒分 | 壹仟贰佰叁拾肆元伍角柒分 |
| 金额(整亿) | 100000000 | 金额·小写 | 壹亿元整 | 壹亿元整 |
| 年份 | 2024 | 年份·小写 | 二〇二四 | 二〇二四 |
| 序数 | 1 | 序数·小写 | 第一 | 第一 |
| 序数(大数) | 110 | 序数·小写 | 第一百一十 | 第一百一十 |
| 序数(大写) | 12 | 序数·大写 | 第壹拾贰 | 第壹拾贰 |
工作原理
- 1输入先做规范化:全角数字转半角、去除千分位逗号与空白、去除 ¥ / $ 等货币符号、补全缺失的整数位或小数位,再用正则校验格式是否合法。
- 2整数部分按每 4 位一节从低位向高位切分(个节 / 万节 / 亿节 / 兆节…),每节内 0~9999 转成「X千X百X十X」并追加节单位。
- 3零的处理遵循四条规则:① 节内中间零合并为一个「零」(105 → 一百零五);② 节尾零不读(1200 → 一千二百);③ 跨节时低节最高位为 0 且节值非零要补「零」(1000001 → 一百万零一);④ 整节为零且更高节非零则该节不读,但其下仍有非零节时要补一个「零」(100000000 → 一亿,100000010 → 一亿零一十)。
- 4各模式复用同一套整数转换:普通模式追加「点 + 逐位小数」,负数加「负」前缀;金额模式用大写数字并把元 / 角 / 分拼接;年份模式逐位读且 0 读作「〇」;序数模式在普通结果前加「第」。
- 5全程使用字符串与 BigInt 运算,不经过浮点数,因此万亿级甚至 48 位整数都不会出现精度丢失;转换在浏览器本地完成,不发起任何网络请求。
常见问题
「一十」和「十」有什么区别?什么时候用哪种写法?
中文口语中 10 读作「十」而不是「一十」,11~19 同理读作「十一」至「十九」,因此普通模式(小写)对最左侧的「一十」会省略「一」。但大写财务写法必须补全为「壹拾」,因为票据上不允许出现可被添改的「拾」,所以大写模式保留「壹拾」。本工具已按此规范区分处理。
金额大写为什么会有「零元零肆分」这种写法?
这是人民银行对票据大写金额的规范要求:金额小于 1 元时,整数部分写「零元」;角位为零而分位不为零时,角位必须补「零」再写分,以防被篡改,例如 0.04 应写作「零元零肆分」而不是「肆分」。同理 10001.05 写作「壹万零壹元零伍分」。
为什么 100000010 是「一亿零一十」而不是「一亿零一十万」?
按 4 位一节的规则,100000010 = 1亿 + 0万 + 10(个节),万节整节为零不读,但其低位节仍有数值,因此跨节补一个「零」,个节读作「一十」,合起来就是「一亿零一十」。而 100000000 的万节与个节都为零,没有需要读出的低位节,所以直接读「一亿」。
支持多大的数字?会精度丢失吗?
普通模式整数部分最多支持 48 位(对应节单位至「载」),金额模式按人行场景限制整数部分最多 16 位(约 1000 万亿元)。转换内部完全使用字符串分节与 BigInt 运算,不经过 JavaScript 的浮点数,因此不会出现大数精度丢失;但输入超过 JavaScript Number 安全整数范围时,请直接以文本输入(工具按字符串解析,不受影响)。
小数和负数是怎么处理的?
小数部分逐位读出,小数点读作「点」,例如 3.14 → 三点一四、10.04 → 十点零四;负数统一加「负」前缀,例如 -5 → 负五。金额模式则不受逐位规则影响,会把小数四舍五入到「分」后按元 / 角 / 分结构输出。年份模式与序数模式不支持小数,输入小数会给出内联错误提示。
批量转换支持哪些输入格式?
批量区每行填一个数字,空行会自动忽略;同样支持千分位逗号、货币符号、全角数字与正负号。结果以表格展示(原始输入 / 规范化值 / 转换结果 / 状态),可逐行复制,也可一键复制全部——复制内容为「输入 + 制表符 + 结果」,直接粘贴到 Excel / 飞书表格即可分列。