数字转英文单词完全指南:支票金额、合同价款、序数词写法
把阿拉伯数字写成英文单词,看着简单,放到支票和合同里就处处是坑。这篇讲清支票金额的法定写法、英式美式 and 的区别、序数词规则,以及大数为什么不能用浮点数算。
数字转英文单词:支票、合同、序数词怎么写才对
把 1234 写成 "one thousand two hundred thirty-four",听上去是小学英语,可真正到了开支票、签合同、做发票模板的时候,错一个词就可能让一张支票被退回,或者让一份合同金额出现歧义。这篇我把数字转英文单词里那些容易踩的坑讲清楚:支票金额的法定写法、英式和美式的 and 差别、序数词的规则,以及一个很多人忽略的精度问题。需要边读边试的,直接打开 /zh/t/number-to-words/。
支票金额为什么写成 "and 56/100 Dollars"
很多人第一次写英文支票,会照着说话的习惯写成 "One Thousand Two Hundred Thirty-Four Dollars and Fifty-Six Cents",这没错,但银行更认另一种:把角分写成除以 100 的分数。
一个真实例子:你要付承包商 1234.56 美元,在支票模式下输入 1234.56,得到的是:
One Thousand Two Hundred Thirty-Four and 56/100 Dollars
这里有三个细节是法定惯例,不是随便的风格选择。第一,整数部分每个词首字母大写,别人没法在 "Thirty-Four" 中间偷偷塞一位数字。第二,角分写成 56/100 这个分数,而不是 ".56",因为小数点后面太容易被人改动。第三,整个 "and" 只出现在美元和美分之间,绝不出现在美元金额内部。这就是防篡改的核心逻辑:文字写法要让任何后来加上去的笔画都显得突兀。
英式和美式的 and,差在哪里
这是最常被搞混的一点。美式英语在百位和后面的数之间不加 and:
- 105 写成 one hundred five
- 2001 写成 two thousand one
英式英语会加 and:
- 105 写成 one hundred and five
- 2001 写成 two thousand and one
意思完全一样,纯粹是地区习惯。给美国客户的文件用美式,给英国或英联邦国家的用英式。在普通读法模式里有个英式 and 的开关,按你的读者切换就行。
但要注意:支票模式不受这个开关影响。支票永远遵守银行惯例,and 只保留在整数与角分之间,整数内部一律不带。这是我自己第一次帮朋友核对一张英国支票时栽过的跟头:我习惯性地把 "One Hundred and Five" 当成正确写法填进了金额行,结果柜员说整数里不该有 and,得重开。从那以后我才彻底分清,口语里的 and 和支票里的 and 是两套规则。
序数词:twenty-first 不是 twenty-oneth
序数词是另一个高频出错点。基数变序数,词尾规则并不统一:
- 1 → first(不是 oneth)
- 2 → second
- 3 → third
- 21 → twenty-first(只有个位变,十位不变)
- 100 → one hundredth
学生最常写错的是 21 这类合成数,会写成 twenty-oneth,正确的是 twenty-first,只有最后一个词变序数形式。还有 -y 结尾的整十数,比如 20 的序数是 twentieth,要把 y 变成 ie 再加 th。这些规则用工具的序数词模式一个个对照,比死记硬背快得多。
大数为什么不能用浮点数算
这一条偏技术,但直接关系到金额的准确性,做财务和开发的尤其要看。
很多简易的数字转单词脚本会先把字符串 parseFloat 成数字再处理。问题在于 JavaScript 的安全整数上限是 2 的 53 次方,大约 9007 万亿。超过这个数,浮点数就会丢精度。举个例子:
9,000,000,000,000,001
这个数末尾的 1,如果先经过 parseFloat,会被悄悄抹成 ...000000,你拼出来的英文金额就少了一块钱却毫无察觉。正确的做法是直接读数字字符串,用 BigInt 做运算,不经过浮点数。这样到 quadrillion(10 的 15 次方)量级、二十一位上下的数都能一位不差。超过十五位的金额,出结果后务必拿回去和原始数字核对一遍。
小数怎么念
普通读法模式下,小数点后面是逐位念的,像念版本号或序列号那样:
- 3.14 → three point one four
不是 three point fourteen。原因是如果把小数当整数念,3.14 和 3.014 听起来就一样了,逐位念才不会有歧义。这一点在做配音脚本和无障碍字幕时特别有用,旁白要的就是 "three point one four" 这种逐位读法。
支票模式则不同,它会把数值四舍五入到两位小数,小数部分直接变成角分,因为支票货币只有两位。
还想做哪些数字换算
数字转英文只是数字处理的一块。如果你要的是中文金额大写,比如把数字写成 壹贰叁这种,用 /zh/t/chinese-numeric-converter/ 才对路。要给数字加千分位逗号、调整小数位、做表格排版,看 /zh/t/number-formatter/。这些工具都在浏览器本地跑,不上传你的金额数字。
Made by Toolora · Updated 2026-06-13