数字转英文单词转换器
即时将数字转换为英文读法
输入任意数字,立即用英文单词读出它——从个位数一直到数百万亿,支持负数和两位小数。写支票、拟法律文书、开发票时都很实用,也适合用来学习英文大数字怎么读。所有转换都在浏览器本地完成。
支持的输入格式
校验规则刻意做得严格,这样输出的单词才不会有歧义。它接受:
- 一个可选的负号。
- 1 到 15 位整数。
- 一个可选的小数点,后跟 1 或 2 位数字。
也就是说 42、-42、0.5、1234.56 和 999999999999999 都有效。会被拒绝的形式包括 .5(没有整数位)、1.(小数点后没有数字)、1,000(逗号)、1 000(空格)、+7(加号)、1e6(科学计数法)和 1.234(三位小数)。工具在你输入时即时转换;当输入不符合格式或超出支持范围时,会给出提示。
转换原理
英文数字以三位为一组来构建。算法先把输入拆成整数部分和小数部分,再从最大的量级往下读整数部分:
- 先把数值四舍五入到两位小数,消除浮点误差。
- 依次走过 trillion、billion、million、thousand 这些量级。每一级取最多三位数字组成的一组,用同样的百位-十位-个位规则转换。
- 转换剩下的、不足一千的那一组。
- 如果还有小数部分,加上 “point”,再逐位读出每位小数。
在三位一组内部,先读百位,再读十位和个位,中间用连字符连接(twenty-one、ninety-nine)。十几的数字(eleven 到 nineteen)不规则,作为一个整体词块处理。风格是美式英语,所以百位内不加 “and”:123 是 “one hundred twenty-three”,不是 “one hundred and twenty-three”。
实操示例
| 输入 | 输出 |
|---|---|
| 1,234,567 | one million two hundred thirty-four thousand five hundred sixty-seven |
| 1000000 | one million |
| 3.5 | three point five |
| -0.05 | negative zero point zero five |
| 999999999999999 | nine hundred ninety-nine trillion nine hundred ninety-nine billion nine hundred ninety-nine million nine hundred ninety-nine thousand nine hundred ninety-nine |
3.5 这个例子体现了逐位读小数的规则:它是 “three point five”,绝不会是 “three and a half” 或 “three point fifty”。-0.05 同时展示了负数前缀和以零开头的小数,读作 “zero five”。15 位那个例子是上限,依次用到了每一个量级词。
语言支持与做不到的事
转换只输出英文基数词。这一点容易被忽略,因为网站也有中文和德文版:那些语言版本翻译的是页面标签、按钮和帮助文字,生成单词的库并没有本地化。中文用户输入 42,看到的仍然是 “forty-two”,而不是 “四十二”。如果你需要其他语言的数字读法,这个工具不是合适的来源。
- 没有货币单词。 它给出 “one thousand two hundred thirty-four point five six”,而不是 “one thousand two hundred thirty-four dollars and fifty-six cents”。
- 没有序数词。 没有 “first”、“second” 或 “twenty-first” 这类结果,始终是基数词。
- 不保留前导零。
007会变成 “seven”,因为数值是按数字解析的。 - 不支持两位以上的小数。 三位及以上小数会被校验器直接拒绝,而不是四舍五入。
- 不接受科学计数法或带格式的输入。 逗号、单位后缀和指数都不接受。
- 不输出英式的 “and”。 全文采用美式写法。
小数读法与英式、美式差异
小数部分是最容易在手工书写金额时出错的地方。工具不把小数部分当成一个整数来读,而是逐位读。所以 1234.56 是 “one thousand two hundred thirty-four point five six”,0.05 是 “zero point zero five”。只有一位小数时单独读出:3.5 是 “three point five”。末尾的零会被去掉,2.10 变成 “two point one”——本质上就是 2.1 的值,这也是 2.10 这类两位小数输入仍然能用的原因,尽管最后的零消失了。
这正是银行希望支票上采用的写法:先写金额的单词,再把分写成两位一组,例如 “one thousand two hundred thirty-four and 56/100”。计算器只给出单词部分;货币名称和分数记法仍需你自己补上。如果你粘贴了一个三位小数的值,校验器会拒绝而不是四舍五入,所以请先把金额四舍五入到两位再转换。
英语数字单词在英美之间有一个显眼的差别:英式英语在百位后、十位或个位前插入 “and”。英式读作 “one hundred and twenty-three”;本工具遵循的美式写法是 “one hundred twenty-three”。差别听起来很小,但法律和金融文书往往有固定的行文风格,混用两种写法的文件会显得不一致。如果你的机构要求英式写法,请在百位处手动加上 “and”——这里没有对应的开关。除了这一个词,两种惯例是一致的:相同的量级词、十位与个位之间相同的连字符,以及相同的逐位小数读法。
实用场景
银行和房东常常要求支票上的金额既有数字又有文字;法律合同也会把金额拼写出来,增加篡改难度。发票出于同样的原因也常带一行大写金额。老师和语言学习者用这个工具核对大数字怎么朗读;无障碍工作流把数字转成文本,让屏幕阅读器和语音合成正确发音。请把金额保持在两位小数,以贴合货币通常的写法;同时记住输出只是一个词组——货币名称要你自己加。
相关工具
常见问题
这个转换器能处理的最大数字是多少?
输入框允许最多 15 位整数,因此最大值为 999,999,999,999,999,刚好接近一千万亿。16 位及以上的数字会被拒绝。这段范围内用到的量级词只有 thousand、million、billion 和 trillion。
为什么 1.20 读作 "one point two" 而不是 "one point twenty"?
小数部分逐位读出,而不是当作一个整数。去掉末尾的零之前,1.20 是 "one point two zero"。工具会删掉末尾的零,于是剩下 "one point two"。读成 "point twenty" 是错的,因为 twenty 不是单个数字。
"007" 会读成 "zero zero seven" 还是 "seven"?
读成 seven。输入会被解析成数字,前导零在生成单词前就被丢弃。如果你需要逐位朗读,请把数值当作字符串,或单独使用数字零的 ASCII 码。
可以输入带逗号或货币符号的数字吗?
不可以。校验器只接受可选的负号、数字,以及最多两位小数的可选小数点。逗号、空格、美元符号、加号,以及 1e6 这类科学计数法都会被判为无效输入。
网站界面有中文版,数字读法会跟着变成中文吗?
不会。界面标签会被翻译,但数字转单词的转换只输出英文。英文、中文和德文页面生成的都是同一套英文基数词,没有中文或德文的数字读法。
负数和零怎么处理?
零读作 "zero"。负数会加上 "negative" 前缀,所以 -42 读作 "negative forty-two",-0.5 读作 "negative zero point five"。减号只允许出现在输入的最前面。
由 HandyTools Hub 团队审校 · 最后更新