这个工具能做什么
本工具可以把一个数值转换成对应的英文书面表达。你可以选择三种输出方式之一:普通单词(Words)——直接把数字拼成英文;货币(Currency)——以金额短语呈现,含主单位和辅单位(例如 dollars 和 cents);支票(Check)——标准的银行支票书写格式,金额用英文单词写出,分(cents)部分则写成分母为 100 的数字分数形式。拼写采用英语世界通用的「短级差」(short scale)规则,即 billion 为 \(10^9\)、trillion 为 \(10^{12}\)。各币种的名称带有不同国家或地区的特色,但底层的英文拼写规则在哪里都一样。
使用方法
在第一个输入框里填入数字,可以带小数点、负号以及千位分隔符。然后选择目标格式:货币模式下选一种币种;支票模式下选支票上印的币种名称,并可选填一个结尾词(exactly 或 only)。最后选择字母大小写:全小写、全大写、首字母大写(Title Case)或句首大写(Sentence case)。结果会自动更新,所选的大小写样式会在最后应用到整段文字上。
计算规则说明
整数部分从右往左每三位一组进行拆分。每一组先念出百位,再念出十位(与个位之间用连字符连接,例如 twenty-one),随后加上对应的级差词(thousand、million、billion 等)。其拼接方式可表示为:
$$N=\sum_{i=0}^{k} g_i\cdot 1000^{i}\;\Rightarrow\;\text{join}(\text{group}_i + \text{scale}_i)$$
按照美式(US)习惯,纯数字内部不会插入「and」。在普通单词模式下,小数点后的每一位都会在单词「point」之后逐位读出,并保留前导零,因此 .05 会读作「point zero five」:
$$\text{words} = \text{intToWords}(\text{integer}) \; [+\; \text{"point"} + \text{digits}]$$
在货币和支票模式下,数值会四舍五入到整数分,以避免浮点数误差:
$$\text{cents}=\operatorname{round}(x\times 100),\;\text{whole}=\lfloor \text{cents}/100\rfloor,\;\text{minor}=\text{cents}\bmod 100$$
实例演示
在货币模式下输入 1234.05,币种选 dollars,大小写选 Title Case。整数部分 1234 拼成「one thousand two hundred thirty-four」,分(cents)部分 5 拼成「five」,合起来就是「one thousand two hundred thirty-four dollars and five cents」。套用 Title Case 后即得到 「One Thousand Two Hundred Thirty-Four Dollars And Five Cents」。
常见问题
为什么数字中间没有「and」?美式英语在整数内部不使用「and」,它只用来分隔金额的主单位和辅单位(如元和分)。
没有「分」的币种如何处理?日元、人民币、韩元、越南盾没有辅单位,因此四舍五入后只拼出整数金额。
输入框为空会怎样?空白框会按零处理,返回「zero」。