返回博客

ISO 4217货币代码:开发者完整指南

V
Vlado Grigirov
April 04, 2026
"Currency API" "Exchange Rates" "Finexly" "ISO 4217" "Developer Guide" "Currency Codes"

ISO 4217货币代码:开发者完整指南

如果您曾经构建过支付系统、集成过汇率API或在多种货币中显示价格,那么您已经遇到过ISO 4217货币代码——无论您是否意识到。USDEURJPYGBP等三字母代码是软件开发中金融领域的通用语言。理解它们的工作原理、来源以及如何正确使用它们,对于任何构建金融应用程序的开发者来说都至关重要。

本指南涵盖您需要了解的所有内容:货币代码的结构、世界上最常用货币的参考列表、如何处理小数单位和特殊代码,以及如何通过Finexly API文档获取实时汇率。


什么是ISO 4217?

ISO 4217是由国际标准化组织(ISO)发布的国际标准,定义了表示世界货币的代码。该标准于1978年首次推出,现在被银行系统、金融软件、电商平台、支付处理商和汇率API普遍使用。

该标准有三个核心目的:

  • 消除歧义 — "美元"可能指美国美元、加拿大美元、澳大利亚美元等数十种货币。USDCADAUD是明确无误的。
  • 支持自动化处理 — 字母代码和数字代码使不同字符集支持的系统能够可靠地处理货币数据。
  • 支持国际互操作性 — 任何兼容系统都可以在没有自定义映射的情况下交换金融数据。

该标准由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美元美国8402
CAD加拿大元加拿大1242
MXN墨西哥比索墨西哥4842
BRL巴西雷亚尔巴西9862
ARS阿根廷比索阿根廷0322
CLP智利比索智利1520

欧洲

代码货币国家/地区数字代码小数位
EUR欧元欧元区9782
GBP英镑英国8262
CHF瑞士法郎瑞士7562
NOK挪威克朗挪威5782
SEK瑞典克朗瑞典7522
PLN波兰兹罗提波兰9852
TRY土耳其里拉土耳其9492

亚太地区

代码货币国家数字代码小数位
JPY日元日本3920
CNY人民币中国1562
HKD港元香港3442
SGD新加坡元新加坡7022
AUD澳大利亚元澳大利亚0362
KRW韩元韩国4100
INR印度卢比印度3562
TWD新台币台湾9012

使用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货币的实时汇率。随着业务增长升级计划

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 →