货币代码(ISO 4217)
做结账表单、汇率表或导出发票时常用。
| 货币 | 代码 | 符号 | 小数位 |
|---|---|---|---|
| 美元 | USD | $ | 2 |
| 欧元 | EUR | € | 2 |
| 英镑 | GBP | £ | 2 |
| 日元 | JPY | ¥ | 0 |
| 人民币 | CNY | ¥ / 元 | 2 |
| 港元 | HKD | HK$ | 2 |
| 新台币 | TWD | NT$ | 2 |
| 韩元 | KRW | ₩ | 0 |
| 瑞士法郎 | CHF | CHF | 2 |
| 加元 | CAD | C$ | 2 |
| 澳元 | AUD | A$ | 2 |
| 新西兰元 | NZD | NZ$ | 2 |
| 新加坡元 | SGD | S$ | 2 |
| 印度卢比 | INR | ₹ | 2 |
| 印尼盾 | IDR | Rp | 2 |
| 泰铢 | THB | ฿ | 2 |
| 越南盾 | VND | ₫ | 0 |
| 马来西亚林吉特 | MYR | RM | 2 |
| 菲律宾比索 | PHP | ₱ | 2 |
| 巴西雷亚尔 | BRL | R$ | 2 |
| 墨西哥比索 | MXN | Mex$ | 2 |
| 阿根廷比索 | ARS | $ | 2 |
| 土耳其里拉 | TRY | ₺ | 2 |
| 俄罗斯卢布 | RUB | ₽ | 2 |
| 沙特里亚尔 | SAR | ﷼ | 2 |
| 阿联酋迪拉姆 | AED | د.إ | 2 |
| 南非兰特 | ZAR | R | 2 |
| 波兰兹罗提 | PLN | zł | 2 |
| 瑞典克朗 | SEK | kr | 2 |
| 挪威克朗 | NOK | kr | 2 |
| 丹麦克朗 | DKK | kr | 2 |
说明
- 小数位按 ISO 4217 现金金额惯例;加密货币等账本可能不同。
- 显示符号会撞车(如 $),存储请用三字代码。
ISO 4217 实际规定的内容
ISO 4217 是国际标准,为每种货币分配三位字母代码、数字代码以及确定的小数位数。这些字母并非随意排列:前两位通常代表国家或地区,第三位代表货币名称,因此 USD 代表美元,JPY 代表日元,EUR 代表欧元。该标准还规定了辅币位数——即小数点后有多少位——这也是软件正确舍入金额的依据。当系统说"存储代码"时,指的是 ISO 4217 字母代码,而非货币符号,这一区分可以避免一类支付错误。
为什么仅靠货币符号远远不够
货币符号存在一种代码所没有的歧义。美元符号不仅用于美元,还用于加拿大元、澳大利亚元、新西兰元、港元和新加坡元等;日元和人民币的符号重叠;英镑符号则同时代表英镑和其他几种货币。写为 "$10" 的价格无法让你知道指的是哪种货币。在发票、API 和数据库中,存储三位字母代码可以彻底消除歧义,而货币符号则作为展示层面的细节,在显示时根据受众来选择。任何处理国际资金的系统的原则很简单:存储代码,渲染符号。
辅币位数、指数与舍入
小数位数是货币本身的属性,而非全局设置。大多数货币使用两位小数,因此美元、欧元、英镑和人民币都精确到分。但日元和韩国圆没有辅币单位——100 日元就是 100 日元,没有小数——而少数以第纳尔计价的货币,包括科威特第纳尔、巴林第纳尔、阿曼里亚尔和突尼斯第纳尔,则使用三位小数。有些货币在现金交易和会计记账中使用不同的辅币单位。在这些情况下错误舍入可能导致百倍级别的差异,因此务必从标准中读取指数,切勿默认两位小数。
简短的代码,繁多的边界情况
在任何参考表的少量主要货币之外,还存在各种棘手的情况。货币会经历重新计价——津巴布韦就多次去掉了零——被取代的代码仍保留在历史记录中。一些地区直接使用他国货币,因此没有本地代码。加密货币故意不在 ISO 4217 体系内,而是使用自己的代号,这就是为何同时处理加密货币和法定货币的账本需要知道自己处于哪个命名空间中。此外,还有些货币在不同国家共用一个名称却拥有不同的代码和面值。关键经验是:代码是稳定标识符,而符号、名称甚至小数位数都可能发生变化。
常见问题
- EUR 是什么货币的代码?
- EUR 是欧元的 ISO 4217 代码,多数欧盟国家使用欧元,符号为 €。
- 日本的货币代码是什么?
- 日元的 ISO 4217 代码是 JPY,符号为 ¥,没有小数位。
- 为什么存三字货币代码而不是符号?
- 符号会重复,比如 $ 可指美元、加元、澳元等多种货币;三字 ISO 4217 代码没有歧义。