中文数字转阿拉伯数字

把「一千二百三十四」「五亿三千万」「二〇二六」转成阿拉伯数字:按万进位解析,万亿、亿、兆各成一档,段内用十百千累积,零只占位不参与运算;大小写两套数字字与廿、卅、卌都收,全数字串按位直读,每行给出解析步骤与行号,全程在本机完成。

行号原文阿拉伯数字解析步骤

输入框默认写好 20 行示例,页面打开就自动转换一次。表格默认列前 12 行,其余用「加载更多」放出;「复制 TSV」复制整张表,「导出 CSV」存成 .csv 并带字节序标记,Excel 双击不乱码。文本与结果都不离开本机。

使用方法

  1. 「中文数字输入」默认写好 20 行示例,页面打开就自动转换一次。改内容、换千分位或换解析步骤都会立刻重算。
  2. 一行写一个中文数字,行号按输入顺序编号;空行自动跳过,不计入成功行数。想一次处理一整列,从表格软件里复制粘贴进来即可。
  3. 「千分位」默认加逗号,530000000 显示成 530,000,000;关掉后输出纯数字串,方便再粘去别的程序。只改显示,不改数值。
  4. 「解析步骤」默认关闭。打开后第四列列出每个字符的动作,例如「五:cur=5 亿:total+=500000000 三:cur=3 千:seg=3000 万:total+=30000000 收尾:530000000」,用来核对手算结果。
  5. 输入框里按 Ctrl+Enter(Mac 是 Cmd+Enter)执行转换,直接按 Enter 会换行,不会误触发。
  6. 表格默认只列前 12 行,「加载更多」每次再放 12 行,按钮上写明还剩几行。「复制 TSV」与「导出 CSV」都带全部行,不受 12 行限制。
  7. 无法识别的字符会报「第 N 行:无法识别的字符「X」。中文数字只用零〇一二三四五六七八九、大小写两套数字字与十百千万亿兆,不接受小数点、负号、空格与英文」,该行标红,其余行照常输出。
  8. 「清空输入」清空输入框并提示请填写内容;「填入示例」把 20 行示例写回去。

中文数字转阿拉伯数字能解决什么

第一类是把手写材料接进能算数的管道。合同、发票里的「壹佰贰拾叁万肆仟伍佰陆拾柒元整」要录进表格或数据库,靠人眼逐位翻译既慢又错。这一页一行一个,粘一整列进来一次出结果,行号与输入一一对应,错行能直接定位回原文。

第二类是大小写两套数字字。小写零一二三四五六七八九用于日常,大写壹贰叁肆伍陆柒捌玖与佰仟拾是财务防篡改写法:一二三笔划少,容易被改成三笔的五或七;壹贰叁笔画繁复,事后改动容易看出。本页两套都收,混着写也认,「贰佰」得 200,「陆仟柒佰捌拾玖」得 6789。

第三类是农历与老写法。农历日期常写「廿三」「卅一」,指二十三日、三十一日;「廿」「卅」「卌」是单字的 20、30、40,本页把它们直接计入段,所以「廿三」得 23 而不是 3。

还有一类是年份直读。「二〇二六」「二零二零」这种四个数字字连写、中间没有任何单位字的串,本页按位直读成 2026、2020。这与带单位字的走的是两条分支,靠「整串是否全是数字字」分派,是这一页最容易写错的地方。

解析原理与三个变量

整页分两步:先按行切分,再对每行跑同一个万进位状态机。状态机只有三个变量:total 是已收拢的高位和,seg 是当前段(同一万亿/亿/万层级内)的累积值,cur 是刚读到、还没被单位字消化的数字。

中文数字是万进位,不是英文那种千进位:四位一级,万、亿、兆之间各隔四位。这正是「一万亿」等于 10¹² 而不是 10⁸ 的原因——从亿到万亿跨了四位。英文的 thousand、million、billion 每级三位,10¹² 在英文里是 billion,在中文里是兆或万亿,同样的位数名字不同。

四条规则决定全部行为。其一,数字字只更新 cur,不清 seg。「一千二百三十四」里读到「二」时 seg 已经是 1000,cur 只是变成 2。其二,十百千把 (cur 或 1) 乘上级再加进 seg,之后 cur 归空。所以「千」进来时是 1×1000;「十」进来时若前面没有数字,按 1 计,「十一」因此是 11 而不是 1。其三,万亿/亿/兆把 seg 加 cur 收拢后整体乘上级并入 total,然后 seg 与 cur 一起清零。「五亿三千万」就是先收拢 5 乘 10⁸ 进 total,再收拢 3000 乘 10⁴ 进 total。其四,零只占位,不参与任何运算。这是最容易写错的一处:若把零当成会清空 cur 或 seg 的指令,「一千零一」会算成 1。

「万亿」是两字单位,必须整串匹配。若按单字走,先遇「万」把 1×10⁴ 收拢,再遇「亿」把一个空段乘 10⁸,差好几个数量级。本页先试两字的「万亿」,命中就跳过两个字符。

兆在现代汉语有歧义:中国大陆与台日韩多指 10¹²,古书里可指 10⁶ 或 10¹⁶。本页固定取 10¹²,与「万亿」等价,「玖兆」因此得 9000000000000。若材料里兆指 10⁶,请先把「兆」替换成「万」再转。

完整示例(内容仅作演示)

拿「五亿三千万」走一遍。开头 cur 空、seg 为 0、total 为 0。读到「五」,cur 置 5。读到「亿」,先把 cur 并入段得 5,段乘 10⁸ 得 500000000 并入 total,段与 cur 清零。读到「三」,cur 置 3。读到「千」,段加 3×1000 得 3000,cur 清零。读到「万」,段乘 10⁴ 得 30000000 并入 total。收尾 530000000 加段 0 加 cur 0,得 530000000。

五亿三千万
  五   → cur = 5
  亿   → total += (0 + 5) × 10⁸ = 500000000,seg 与 cur 清零
  三   → cur = 3
  千   → seg  += 3 × 10³ = 3000,cur 清零
  万   → total += (3000 + 0) × 10⁴ = 30000000
  收尾 → 530000000 + 0 + 0 = 530000000

再看两个跨段补零的。「一亿零五百」:亿把 1 收拢成 10⁸,「零」只占位,「五」置 cur、「百」把段加成 500,收尾 10⁸ 加 500 得 100000500。「七万零三十」:万收拢 7 得 70000,零占位,「三」置 cur、「十」把段加成 30,收尾得 70030。两例都说明零只是提示读者跳过几位,计算时既不进段也不进位。

「二〇二六」走另一条分支:四个字符全是数字字,没有任何单位字,于是按位直读,2×10³ 加 0×10² 加 2×10 加 6,得 2026。同一条路上「二零二零」得 2020,「一二三」得 123。反过来,一旦串里出现单位字就回到状态机:「一二三」被算成 1×100 加 2×10 加 3,也是 123,两种分支在这个例子上恰好一致;但「一零一」按位直读是 101,走状态机则因零只占位而得 1,所以分派规则必须是「整串全是数字字」这一个条件,不能看长度。

中文数字与阿拉伯数字对照表

下表 12 行各讲一种机制。示例里还有四千五百、二十、三百零五、十一、卅一、两万、贰佰、玖兆八行,用「加载更多」放出。

中文写法阿拉伯数字机制
一千零一1001零只占位,段不被清空,收尾再加 cur
三千零五十3050十前面的「一」省略,按 1 计
一千二百三十四1234段内千百合积,四个单位字依次入段
陆仟柒佰捌拾玖6789大写财务字,与小写完全同权
十二万120000万进位:段 12 乘 10⁴
五亿三千万530000000亿段与万段两段,各自收拢后相加
一万亿1000000000000万亿是两字单位,整体乘 10¹²
一亿零五百100000500跨段补零,零不参与运算
七万零三十70030段内跨百补零,收尾再加 cur
二〇二六2026全数字串,走按位直读分支
一百零100尾随零只占位,不额外补一个 0
廿三23廿是单字 20,直接计入段

抓两个锚点。「一万亿」那一行是唯一涉及两字单位的,写错会把结果压成 10⁸;「二〇二六」那一行是唯一不走状态机的,写错会得到 1。其余十行验证同一个状态机的不同侧面:零的位置、省略的一、跨段、大小写、单字廿。

结果边界、舍入与适用说明

常见问题

为什么「一千零一」不是 1?

因为零只占位,不参与运算。状态机命中零后直接跳过,不清 cur 也不动 seg:「一」置 cur=1,「千」把段加成 1000,零被跳过,「一」再把 cur 置 1,收尾 1000 加 1 得 1001。若把零当成清零指令,就会得到 1,这是这类工具最常见的错。

「二〇二六」为什么是 2026 而不是 26?

因为整串四个字符全是数字字,没有任何单位字,走按位直读分支:2×10³ 加 0×10² 加 2×10 加 6。分派条件只有这一个,与长度无关。「一零一」同样全是数字字,按位直读得 101;混入单位字就回到状态机。

「万亿」为什么要当成一个单位?

因为万进位四位一级,万亿是 10¹²,比亿高四位。若按单字走,先遇「万」把数收拢成 10⁴ 量级,再遇「亿」会把已收拢的段再乘 10⁸,偏大四个数量级。本页优先匹配两字的「万亿」。

兆到底是 10⁶ 还是 10¹²?

两种都有人用,本页固定取 10¹²,与万亿等价。中国大陆与台日韩当代用法多指 10¹²,古书里可指 10⁶ 或 10¹⁶,计算机领域也曾表示 2²⁰。材料用别的口径时,先把「兆」替换成对应写法再转。

「两」和「二」一样吗?

本页当作一样,都映射到 2,「两万」得 20000、「两百」得 200。汉语里两者有分工:两多作位数前的系数,二多作尾数,习惯写「十二」不写「十两」。本页不做风格判断,只做数值。

廿、卅、卌是什么?

单字的 20、30、40,古汉语遗留,今天多见于农历日期,如「廿三」是二十三日。本页把它们直接计入段,所以「廿三」得 23;若让后面的「三」覆盖 cur,就会得到 3。

大写数字是干什么用的,能和小写混着写吗?

大写壹贰叁肆伍陆柒捌玖与佰仟拾是财务防篡改写法,笔画繁复,改动容易察觉。本页两套完全同权,混写也认。页面不判断风格是否统一,只输出数值。

输入的内容会上传到服务器吗?

不会。解析与表格渲染都在本页的 JavaScript 里完成,没有网络请求,刷新即恢复默认示例。导出 CSV 由浏览器本地生成,不经过服务器。

相关工具