ISO 4217货币代码:开发者完整指南
如果您曾经构建过支付系统、集成过汇率API或在多种货币中显示价格,那么您已经遇到过ISO 4217货币代码——无论您是否意识到。USD、EUR、JPY和GBP等三字母代码是软件开发中金融领域的通用语言。理解它们的工作原理、来源以及如何正确使用它们,对于任何构建金融应用程序的开发者来说都至关重要。
本指南涵盖您需要了解的所有内容:货币代码的结构、世界上最常用货币的参考列表、如何处理小数单位和特殊代码,以及如何通过Finexly API文档获取实时汇率。
什么是ISO 4217?
ISO 4217是由国际标准化组织(ISO)发布的国际标准,定义了表示世界货币的代码。该标准于1978年首次推出,现在被银行系统、金融软件、电商平台、支付处理商和汇率API普遍使用。
该标准有三个核心目的:
- 消除歧义 — "美元"可能指美国美元、加拿大美元、澳大利亚美元等数十种货币。
USD、CAD、AUD是明确无误的。 - 支持自动化处理 — 字母代码和数字代码使不同字符集支持的系统能够可靠地处理货币数据。
- 支持国际互操作性 — 任何兼容系统都可以在没有自定义映射的情况下交换金融数据。
该标准由SIX集团代表ISO和瑞士标准化协会维护。
理解代码结构
字母代码(Alpha-3)
每个ISO 4217字母代码恰好是三个大写ASCII字母,结构设计有明确意图:
- 前两个字母 — 来自ISO 3166-1 alpha-2国家代码(如
US代表美国,JP代表日本,GB代表英国) - 第三个字母 — 通常是货币名称的首字母(如
D代表Dollar,Y代表Yen,P代表Pound)
因此,USD = 美国(US) + 美元(D)。JPY = 日本(JP) + 日元(Y)。GBP = 英国(GB) + 英镑(P)。
数字代码
每种货币还有一个三位数字代码(如USD为840,EUR为978,GBP为826)。这些数字代码在不处理拉丁字母的系统中特别有用。
小数单位
ISO 4217还规定了每种货币的小数位数(小数单位):
| 小数位数 | 示例货币 |
|---|---|
| 0 | 日元(JPY)、韩元(KRW)、智利比索(CLP) |
| 2 | 美元(USD)、欧元(EUR)、英镑(GBP) |
| 3 | 科威特第纳尔(KWD)、巴林第纳尔(BHD)、阿曼里亚尔(OMR) |
¥1999格式化为¥19.99会引入99倍的定价错误。主要世界货币参考表
美洲
| 代码 | 货币 | 国家 | 数字代码 | 小数位 |
|---|---|---|---|---|
| USD | 美元 | 美国 | 840 | 2 |
| CAD | 加拿大元 | 加拿大 | 124 | 2 |
| MXN | 墨西哥比索 | 墨西哥 | 484 | 2 |
| BRL | 巴西雷亚尔 | 巴西 | 986 | 2 |
| ARS | 阿根廷比索 | 阿根廷 | 032 | 2 |
| CLP | 智利比索 | 智利 | 152 | 0 |
欧洲
| 代码 | 货币 | 国家/地区 | 数字代码 | 小数位 |
|---|---|---|---|---|
| EUR | 欧元 | 欧元区 | 978 | 2 |
| GBP | 英镑 | 英国 | 826 | 2 |
| CHF | 瑞士法郎 | 瑞士 | 756 | 2 |
| NOK | 挪威克朗 | 挪威 | 578 | 2 |
| SEK | 瑞典克朗 | 瑞典 | 752 | 2 |
| PLN | 波兰兹罗提 | 波兰 | 985 | 2 |
| TRY | 土耳其里拉 | 土耳其 | 949 | 2 |
亚太地区
| 代码 | 货币 | 国家 | 数字代码 | 小数位 |
|---|---|---|---|---|
| JPY | 日元 | 日本 | 392 | 0 |
| CNY | 人民币 | 中国 | 156 | 2 |
| HKD | 港元 | 香港 | 344 | 2 |
| SGD | 新加坡元 | 新加坡 | 702 | 2 |
| AUD | 澳大利亚元 | 澳大利亚 | 036 | 2 |
| KRW | 韩元 | 韩国 | 410 | 0 |
| INR | 印度卢比 | 印度 | 356 | 2 |
| TWD | 新台币 | 台湾 | 901 | 2 |
使用Finexly API获取汇率
Finexly API支持170多种ISO 4217货币代码。以下是获取实时汇率的示例:
cURL
curl "https://finexly.com/api/latest?base=USD&symbols=EUR,GBP,JPY,CNY,AUD" \
-H "Authorization: Bearer 您的API密钥"JavaScript
const BASE_CURRENCY = 'USD';
const TARGET_CURRENCIES = ['EUR', 'GBP', 'JPY', 'CNY', 'AUD'];
async function getExchangeRates() {
const symbols = TARGET_CURRENCIES.join(',');
const url = `https://finexly.com/api/latest?base=${BASE_CURRENCY}&symbols=${symbols}`;
const response = await fetch(url, {
headers: { 'Authorization': 'Bearer 您的API密钥' }
});
const data = await response.json();
return data.rates;
}
getExchangeRates().then(rates => {
console.log(`1 USD = ${rates.EUR} EUR`);
console.log(`1 USD = ${rates.CNY} CNY`);
});Python
import requests
API_KEY = "您的API密钥"
BASE = "USD"
TARGETS = ["EUR", "GBP", "JPY", "CNY", "HKD"]
response = requests.get(
"https://finexly.com/api/latest",
params={"base": BASE, "symbols": ",".join(TARGETS)},
headers={"Authorization": f"Bearer {API_KEY}"}
)
data = response.json()
for code, rate in data["rates"].items():
print(f"1 {BASE} = {rate} {code}")按地区格式化货币
function formatCurrency(amount, currencyCode, locale = 'zh-CN') {
return new Intl.NumberFormat(locale, {
style: 'currency',
currency: currencyCode,
}).format(amount);
}
console.log(formatCurrency(1234.56, 'USD', 'en-US')); // $1,234.56
console.log(formatCurrency(1234.56, 'CNY', 'zh-CN')); // ¥1,234.56
console.log(formatCurrency(1234.56, 'EUR', 'de-DE')); // 1.234,56 €
console.log(formatCurrency(1500, 'JPY', 'ja-JP')); // ¥1,500开发者常见错误
错误1:将货币存储为浮点数
# ❌ 错误 — 浮点误差会导致问题
total = 19.99 * 1.20 # 23.988000000000003
# ✅ 正确 — 使用小数单位的整数
price_cents = 1999 # $19.99以分为单位存储错误2:假设所有货币都有2位小数
// ❌ 错误
formatJPY(1500) // "1500.00 JPY" — 错误!
// ✅ 正确
new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(1500); // ¥1,500常见问题
货币代码和货币符号有什么区别?
货币代码是ISO 4217定义的标准化三字母标识符(如USD),而货币符号是排版简写(如$、€、£)。符号因地区而异,货币代码始终是明确无误的。
ISO 4217有多少货币代码? 截至2026年,约有180个活跃的货币代码。Finexly支持170多个用于实时汇率查询。
我可以在Finexly的免费计划中使用货币代码吗? 是的——免费计划提供对所有支持的ISO 4217货币代码的访问权限,每月最多1,000个API请求。
为什么日元(JPY)没有小数位? 日元的小数化方式与大多数货币不同。虽然它在技术上有一个叫"钱"的子单位(1/100日元),但实际上已不再使用。
在欧元区所有国家应该使用哪个货币代码?
始终使用EUR——无论交易是在德国、法国、西班牙、意大利还是任何其他欧元区国家,代码都是相同的。
准备好将实时汇率集成到您的项目中了吗?获取免费的Finexly API密钥——无需信用卡。从每月1,000次免费请求开始,访问170多种ISO 4217货币的实时汇率。随着业务增长升级计划。
Explore More
Vlado Grigirov
Senior Currency Markets Analyst & Financial Strategist
Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...
View full profile →