货币代码与符号速查
CNY 和 RMB 有什么区别、¥ 和 $ 分别在哪些国家用、货币代码的三位字母怎么记、金额里的小数位为什么不一样。
货币代码是一组三位字母,用来在国际场景中无歧义地标识一种货币。它的存在是因为货币符号本身有大量歧义:「$」可能是美元、澳元、加元或港币,「¥」既指人民币也指日元。
做跨境业务、财务对账、汇率换算时,用代码而不是符号是最基本的规范。了解代码的构成规则,即使在没见过的货币前也能大致判断它属于哪个国家。
1常用货币代码对照
以下是最常涉及的币种。代码由两位国家或地区代码加一位货币单位缩写组成。
| 货币 | ISO 代码 | 符号 | 小数位 |
|---|---|---|---|
| 人民币 | CNY | ¥ / ¥ | 2 位 |
| 美元 | USD | $ | 2 位 |
| 欧元 | EUR | € | 2 位 |
| 英镑 | GBP | £ | 2 位 |
| 日元 | JPY | ¥ / ¥ | 0 位 |
| 中国香港元 | HKD | HK$ | 2 位 |
| 新加坡元 | SGD | S$ | 2 位 |
| 韩元 | KRW | ₩ | 0 位 |
| 澳元 | AUD | A$ | 2 位 |
| 加元 | CAD | C$ | 2 位 |
| 瑞士法郎 | CHF | CHF | 2 位 |
| 印度卢比 | INR | ₹ | 2 位 |
| 俄罗斯卢布 | RUB | ₽ | 2 位 |
| 泰铢 | THB | ฿ | 2 位 |
代码的构成规律是「国家或地区两位代码 + 货币单位首字母」。比如 `CNY` 是中国的 Y(Yuan)、`USD` 是美国的 D(Dollar)、`JPY` 是日本的 Y(Yen)。理解这个规律,看到陌生代码也能大致猜出归属。
2多义符号怎么区分
有几个符号被多个币种共用,直接看符号无法判断是哪种货币。这类场景必须用代码或加前缀。
| 符号 | 可能含义 | 区分方式 |
|---|---|---|
$ | 美元、澳元、加元、新元、港币、墨西哥比索等 | 写 US$、A$、C$、HK$,或直接用代码 |
¥ / ¥ | 人民币、日元 | 写 CNY / JPY,或写成 CN¥ 与 JP¥ |
£ | 英镑(历史上也有其它镑) | 一般指 GBP,必要时写代码明确 |
₩ | 韩元 | 符号基本唯一,但建议配合 KRW |
kr | 瑞典、丹麦、挪威等国的克朗 | 必须用代码区分(SEK / DKK / NOK) |
R | 南非兰特、巴西雷亚尔等 | 用代码 ZAR / BRL 明确区分 |
元 | 人民币、日元、韩元等汉字文化圈货币 | 中文语境下通常指人民币,但跨境场景需明确 |
在国际化产品里,金额展示的通行做法是「代码 + 符号 + 数值」,例如 `USD $1,234.56`。这样即使符号有歧义,也能从代码确定币种。仅靠符号的产品在跨国场景中几乎必然出问题。
3小数位差异与金额书写
不同货币的最小单位不同,这直接影响输入校验与显示格式,是跨境开发中容易忽略的细节。
| 币种 | 小数位 | 最小单位 | 影响 |
|---|---|---|---|
| 美元、欧元、人民币等 | 2 位 | 分 | 最常见的两位小数 |
| 日元、韩元 | 0 位 | 元 | 不显示小数,四舍五入到整数 |
| 部分中东货币 | 3 位 | 千分之一单位 | 如科威特第纳尔、巴林第纳尔 |
| 个别货币 | 无标准小面额 | 视币种而定 | 输入框与校验规则需按币种配置 |
| 千分位差异 | 美式 1,234.56 | 欧陆式 1.234,56 | 小数点与千分位符号的角色互换 |
| 空格分隔 | 部分国家用空格分组 | 如 1 234,56 | 国际化格式化库会按地区处理 |
做金额输入时不要写死两位小数。有些货币没有小数(日元),有些是三位(第纳尔),应按币种配置小数位,否则会出现「输入合法但计算错误」或「无法输入正确金额」的问题。
4换算与使用时要注意的几点
- 区分买入价与卖出价
- 银行牌价有买价与卖价的差别,换算时用错了会与实际到账不符
- 注意中间价与现钞价
- 中间价用于参考,实际换钞与电汇的价格不同,小额换汇差异更明显
- 保留足够的中间精度
- 多步换算时先保留较多位小数,最后再按币种小数位取整,避免误差累积
- 汇率随时刻变化
- 报价型产品应标注汇率的时间点,避免读取缓存导致展示与实际不符
- 金额与币种绑定存储
- 数据库里金额字段应同时存币种,只存数字会导致后续无法解释含义
- 避免用浮点数存金额
- 金额应以最小单位的整数(如分)或定点小数存储,浮点数会带来精度误差
- 代码大小写
- ISO 代码标准写法是大写,存储与比较时统一大写可避免匹配问题
看完就能用的站内工具
全部工具总览 →关于「货币代码与符号速查」的常见问题
CNY 和 RMB 有什么区别?
CNY 是 ISO 4217 标准规定的货币代码,用于国际金融、银行系统与数据交换;RMB 是「人民币」拼音首字母的缩写,属于习惯用语,用于日常交流。在正式场景中应该使用 CNY,比如填写银行单据、对接支付接口、配置汇率数据源时,字段值都要求是标准代码。RMB 虽然广为人知,但它不是标准代码,在程序里作为币种标识可能导致对接失败或数据不一致。简单说:CNY 是规范代码,RMB 是俗称,功能上二者指同一种货币,但技术场景要用 CNY。
¥ 符号到底代表人民币还是日元?
两者都用 ¥ 这个符号,所以单看符号无法判断,必须依靠上下文或加上区分前缀。人民币的代码是 CNY,日元的代码是 JPY,在需要明确时应当写成 CN¥ 和 JP¥,或者直接使用三位代码。这种歧义在跨境业务里会造成实际问题,比如一份报价单只写 ¥1000,对方可能理解成一千元人民币,也可能理解成一千日元,两者价值相差很大。所以通行做法是「代码加符号加数值」一起写,例如 CNY ¥1,000,这样即使符号有歧义也能从代码确定币种。另外 $ 符号同样被美元、澳元、加元、港币等共用,处理方式相同。
为什么日元的金额没有小数?
因为日元的最小流通单位就是 1 日元(元),没有「分」这样的小面额。这是 ISO 4217 标准里明确规定的:日元的小数位是 0 位,而美元、欧元、人民币等是 2 位,还有少数货币是 3 位(如科威特第纳尔)。这个差异对软件开发影响不小:如果金额输入框和校验规则写死两位小数,遇到日元就会出现逻辑错误或用户无法正确输入的情况。正确做法是按币种配置小数位,显示与校验都读取该配置。同理,在做汇率换算时,中间计算应保留足够精度,最后再按目标币种的小数位取整,否则会累积误差。
跨境金额显示要注意什么?
主要注意四件事。第一是币种必须明确,符号有歧义,应使用 ISO 三位代码或「代码加符号」的写法。第二是数字格式的地区差异,美式习惯是千分位用逗号、小数点用点(1,234.56),欧陆部分国家恰好相反(1.234,56),同一串数字在两地的含义完全不同,应使用国际化格式化库按地区处理而不是手工拼接。第三是小数位差异,日元是 0 位、多数币种 2 位、少数 3 位,应按币种配置。第四是存储方式,金额在数据库里应同时保存币种,并以最小单位的整数或定点小数存储,千万不要用浮点数存金额,否则会带来难以排查的精度误差。
继续查:相关内容
全部速查 →内容说明:本页速查数据由本站自行整理,事实性内容以对应官方规范与文档为准,未复制第三方速查表或百科的表述。数据最后核对日期:2026-10-05。若发现错误或已更新的标准,欢迎通过页脚反馈入口告知。
速查在线工具箱