中国本土 本地计算 开箱即用 内置示例 不留痕迹

中文数字转换器

在中文数字(小写读数「一千零二十三」、繁体大写「壹佰贰拾叁」)与阿拉伯数字之间双向转换,支持万 / 亿 / 兆单位、小数与负数,并按汉语口语习惯理解省略单位(「一百二」= 120、「三千五」= 3500、「一万二」= 12000)。转换全部在浏览器本地完成,不联网、不上传。

合同金额要写「壹佰贰拾叁元」、发票要填大写、教孩子读数、核对语音转写里的数字——这些场合需要在阿拉伯数字与中文数字之间来回换。本工具双向都认:小写读数(一千零二十三)与繁体大写(壹佰贰拾叁)都能解析,输出带千分位,小数、负数、口语省略(「一百二」= 120)都在处理范围内。

用之前留意口径:财务票据的「整」字规则(如「壹佰元整」)属于票据填写规范,本工具给的是数字本身的读法,票据用语请按银行模板补齐;「兆」在大陆口径是 10^12(万亿),与台湾地区「兆」= 10^6 的用法不同,跨地区文档先对齐口径再转换。

使用步骤

  1. 选方向:数字 → 中文数字,或中文数字 → 数字。
  2. 数字方向直接输入(支持小数、负数);中文方向可混粘小写与大写。
  3. 口语省略写法(一百二、三千五)按汉语习惯解析,结果即时显示。
  4. 复制结果;财务大写建议再人工核对一遍位数。

计算原理与示例

两个方向怎么用

「数字 → 中文数字」把阿拉伯数字读成汉字: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 → 三点一四一五九)。再大的数建议改用科学计数法表达。

我输入的数字会被上传或记录吗?

不会。全部转换在浏览器本地完成,输入不经过服务器、不写访问日志,也不写入浏览器存储——本工具没有「计算历史」区块,刷新或关闭页面后内容即消失。

延伸阅读

来自本站原创文章,讲清这个工具背后的算法与口径。