中文数字转换器
在中文数字(小写读数「一千零二十三」、繁体大写「壹佰贰拾叁」)与阿拉伯数字之间双向转换,支持万 / 亿 / 兆单位、小数与负数,并按汉语口语习惯理解省略单位(「一百二」= 120、「三千五」= 3500、「一万二」= 12000)。转换全部在浏览器本地完成,不联网、不上传。
合同金额要写「壹佰贰拾叁元」、发票要填大写、教孩子读数、核对语音转写里的数字——这些场合需要在阿拉伯数字与中文数字之间来回换。本工具双向都认:小写读数(一千零二十三)与繁体大写(壹佰贰拾叁)都能解析,输出带千分位,小数、负数、口语省略(「一百二」= 120)都在处理范围内。
用之前留意口径:财务票据的「整」字规则(如「壹佰元整」)属于票据填写规范,本工具给的是数字本身的读法,票据用语请按银行模板补齐;「兆」在大陆口径是 10^12(万亿),与台湾地区「兆」= 10^6 的用法不同,跨地区文档先对齐口径再转换。
这个工具解决你的问题了吗?
提交后会把工具名、你的输入与当前结果发送到服务器;请勿填写身份证号、手机号等隐私信息。
AI 助手 会结合你当前的输入与结果回答
追问会再次把当前输入与结果发送到服务器;请勿填写隐私信息。
使用步骤
- 选方向:数字 → 中文数字,或中文数字 → 数字。
- 数字方向直接输入(支持小数、负数);中文方向可混粘小写与大写。
- 口语省略写法(一百二、三千五)按汉语习惯解析,结果即时显示。
- 复制结果;财务大写建议再人工核对一遍位数。
计算原理与示例
两个方向怎么用
「数字 → 中文数字」把阿拉伯数字读成汉字:12345 得「一万二千三百四十五」,10 得「十」(10~19 读「十X」而不是「一十X」),小数逐位读(3.14 → 三点一四),用字符串输入还能保留小数尾零(1.50 → 一点五零)。「中文数字 → 数字」方向同时接受小写读数与繁体大写,例如「壹佰贰拾叁」与「一百二十三」都得 123,输出带千分位。
口语省略单位怎么算
汉语口语常省略最低位的单位:「一百二」是 120、「三千五」是 3500、「一万二」是 12000、「二万五」是 25000。本工具按这条通行规则解析(末位数字 × 最近单位 ÷ 10);但如果中间出现「零」,就按字面读作 102 而不是 120。
支持哪些写法
支持的写法:小写数字零 / 〇 / 一~九、繁体大写壹~玖,单位十 / 百 / 千 / 万 / 亿 / 兆(含拾 / 佰 / 仟 / 萬 / 億),特殊数词廿(20)与卅(30),以及负号与「点」。中文与阿拉伯数字**不能混写**(如「3万5」),混写会提示格式错误而不是猜一个值。
口径:单位按中国大陆习惯(万 = 10^4、亿 = 10^8、兆 = 10^12);10~19 读作「十X」;口语省略单位按「末位数字 × 最近单位 ÷ 10」解析(一百二 = 120、一万二 = 12000),中间有「零」时按字面值(一百零二 = 102);中文与阿拉伯数字不混写。整数位最多 16 位,小数按位逐字读出。
代码示例
Python cn2an 双向转换
# pip install cn2an
import cn2an
cn2an.transform("一百二十三", "cn2an") # 123
cn2an.transform("123", "an2cn") # 一百二十三
cn2an.transform("壹佰贰拾叁", "cn2an") # 大写同样识别
# 口语省略(一百二)cn2an 默认按严格读法处理,
# 需要口语口径时用 strict=False 参数
JavaScript 读数规则的核心:零与单位
// 中文读数三条规则:万进制分段、零的合并、10~19 读「十X」
const digits = "零一二三四五六七八九";
const read4 = (n) => { // 读 0~9999
const u = ["", "十", "百", "千"];
let s = "", zero = false;
for (const [i, ch] of [...String(n)].entries()) {
const d = +ch;
if (d === 0) { zero = s.length > 0; continue; }
if (zero) { s += "零"; zero = false; }
s += (n === 10 || (i === 1 && d === 1) ? "" : digits[d]) + u[3 - i];
}
return s || "零";
};
read4(1023); // "一千零二十三"
常见问题
「一百二」为什么等于 120 而不是 102?
这是汉语口语的省略习惯:末位数字省略了单位时,按「最近一次出现的单位 ÷ 10」取值——「一百二」省掉的是「十」,所以是 120;「三千五」省掉的是「百」,得 3500。若要表达 102,通常写成「一百零二」,本工具遇到「零」就按字面值解析。
「一万二」是 12000 还是 10002?
12000。规则同上:末位省略的单位是「千」(万的下一级),所以那个 2 表示 2000。要表达 10002 应写「一万零二」——中间的「零」会打断省略规则,让末位数字回到个位。
台湾的「兆」和大陆一样吗?
不一样。本工具按中国大陆口径把「兆」当作 10^12(万亿);台湾的「兆」指 10^6(百万),日本也沿用百万口径。跨地区文档里看到「兆」建议改写成「万亿」或「百万」,避免读者误判数量级。
为什么 10 读作「十」而不是「一十」?
这是汉语读数的规范:10~19 一律读「十X」(十五、十九),只有当它们出现在更高位之后才带「一」(一百一十五)。输入「一十五」本工具同样能识别为 15,只是输出会按规范写成「十五」。
「廿」「卅」也能转换吗?
能。「廿」= 20、「卅」= 30,常见于日期、古籍与方言口语(如「廿三」= 23)。本工具按与普通数字相同的规则解析,也支持「廿五」「卅二」这类组合,并可与后面的单位连用。
中文数字和阿拉伯数字能混着写吗?
不能。「3万5」「1.5万」这类混写会直接提示格式错误——因为「3万5」既可以理解为 35000,也可能被读成 30005,歧义太大。请统一写成纯中文(三万五)或纯数字(35000)。
支持多大的数字?
整数位最多 16 位(约 9000 万亿),覆盖金额、人口、字数等日常场景;小数位数不限,按位逐字读出(3.14159 → 三点一四一五九)。再大的数建议改用科学计数法表达。
我输入的数字会被上传或记录吗?
不会。全部转换在浏览器本地完成,输入不经过服务器、不写访问日志,也不写入浏览器存储——本工具没有「计算历史」区块,刷新或关闭页面后内容即消失。
延伸阅读
来自本站原创文章,讲清这个工具背后的算法与口径。