2026年10月24日,USD/EUR 为 0.89342,USD/IDR 为 18,107.8,EUR/IDR 交叉汇率为 20,267.96。两种货币都以美元报价时,它们之间的交叉汇率等于第二个报价除以第一个报价。
使用 API 完成操作
通过美元把 EUR 换算成 IDR 时,EUR 是源货币,IDR 是目标货币。用 GET /v1/fx/rates/USD?currencies=EUR,IDR 一次请求两个美元报价。一次响应就给出除法所需的全部报价。
- 设置你的 API 密钥 获取免费 API 密钥,并放入环境变量
NARWHAL_API_KEY。Python 脚本会读取该变量,并在Authorization请求头中以 Bearer 令牌的形式发送密钥。REST 和 MCP 使用同一个密钥。 - 获取报价并相除 脚本以 USD 为共同基准读取 EUR 和 IDR 的报价,用 IDR 报价除以 EUR 报价,然后再直接请求 EUR/IDR 作对比。先输出的是计算出的交叉汇率,其次是直接汇率。
import os import requests H = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} rates = { r["currency"]: float(r["rate"]) for r in requests.get( "https://api.narwhalapi.com/v1/fx/rates/USD", params={"currencies": "EUR,IDR"}, headers=H, timeout=10, ).json()["rates"] } # USD/EUR = 0.89342 means 1 USD buys 0.89342 EUR; # USD/IDR = 18107.8 means 1 USD buys 18,107.8 IDR. eur_idr = rates["IDR"] / rates["EUR"] print(f"EUR/IDR = {rates['IDR']} / {rates['EUR']} = {eur_idr:.2f}") direct = float( requests.get( "https://api.narwhalapi.com/v1/fx/rates/EUR", params={"currencies": "IDR"}, headers=H, timeout=10, ).json()["rates"][0]["rate"] ) print(f"direct EUR/IDR = {direct}") - 把汇率用到你的金额上 用 EUR 金额乘以计算出的 EUR/IDR 汇率,即可得到 IDR 金额。请在结果旁标明方向:EUR/IDR 汇率表示每 1 EUR 可兑换多少 IDR。把 IDR 换成 EUR 则使用倒数。
使用电子表格或手动计算
把 USD/EUR 报价放在 B1,USD/IDR 报价放在 B2,再在另一个单元格中输入公式。两个输入报价要取同一天的数据。公式用目标货币的美元报价除以源货币的美元报价,因此单元格位置很重要。
=B2/B1给输入单元格加上包含 USD 的完整货币对名称作标签,让共同的基准一目了然。结果标为 EUR/IDR。如果在公式不变的情况下互换两个输入单元格的内容,结果会变成倒数汇率,即 1 IDR 能换得的 EUR。
常见货币对可使用汇率页面里的各货币页面,这些页面列出了常见货币对。如果你已有两个美元报价,并想用这些特定输入算出交叉汇率,表格方式就很合适。
不同情况应选哪种方法
| 情况 | 最合适的方法 | 原因 |
|---|---|---|
| API 提供该货币对 | 直接请求 | 直接读取该货币对,不用四舍五入后的报价去算交叉汇率 |
| API 没有该货币对,或需要历史交叉汇率 | 用同一天的美元报价相除 | 共同的美元基准为计算提供源货币和目标货币的报价 |
| 需要很多货币对 | 只取一次美元报价,再计算交叉汇率 | 每个源货币与目标货币的组合都复用这些美元报价 |
用一组美元报价计算大量交叉汇率时,请在每个公式旁保留源货币和目标货币的标签。源货币决定哪个报价放在分母,目标货币决定哪个报价放在分子。同一个美元报价在一次换算中可以做分子,在另一次换算中做分母。计算历史交叉汇率时,要把日期同输入报价和结果一起保留。如果该货币对可以直接获取,而且只需要这一对,就以你要换出的货币为基准直接请求。
为什么我算出的交叉汇率与直接汇率不同?
输入报价的四舍五入以及时间戳的差异,会使算出的交叉汇率与直接汇率不同。交叉汇率的计算使用你提供的美元报价,因此它们的精度会带入结果。直接读取货币对得到的是直接报价,而不是由这些输入推算出的值。
2026年10月23日,算出的 EUR/IDR 交叉汇率为 20,267.96,直接 EUR/IDR 汇率为 20,268.1,相差 0.14。这一差异来自美元报价的四舍五入。直接值不必与由四舍五入后的输入算出的结果一致。
报价应该按哪个方向相除?
当两个货币对的基准货币相同时,用目标报价除以源报价。通过 USD 计算 EUR/IDR,就是每美元的 IDR 除以每美元的 EUR。共同的 USD 单位约去,剩下的单位是每 EUR 的 IDR。
2026年10月23日,USD/EUR 为 0.89342,因此 1 EUR 能换到比 1 USD 更多的 USD:1 EUR = 1/0.89342 = 1.119 USD。所以当天 EUR 能换到的 IDR 也比 USD 多。用 EUR 报价除以 IDR 报价会使单位颠倒,得到的是每 IDR 的 EUR。
两个报价需要同一天吗?
需要,请使用同一天的报价,因为日期混用会给交叉汇率带来噪声。做历史计算时,先为两个美元货币对选定日期,再相除。结果通过当天的美元报价把源货币和目标货币联系起来。
如果你已有源货币的美元报价,就与目标货币同一天的美元报价配对。不同日期的报价会改变计算的输入。日期一致后,交叉汇率与直接报价不同的原因就只剩上文所述的时间戳和四舍五入差异。
计算示例:2026年10月23日 EUR 兑 IDR
2026年10月23日,美元报价为 0.89342 EUR 和 18,107.8 IDR。以 IDR 报价作分子、EUR 报价作分母,相除后得到每 EUR 的 IDR。
| 计算 | 结果 |
|---|---|
| 2026年10月23日的 USD/EUR | 0.89342 |
| 2026年10月23日的 USD/IDR | 18,107.8 |
| 2026年10月23日的 EUR/IDR:18,107.8 / 0.89342 | 20,267.96 |
| 按2026年10月23日交叉汇率计算 500 EUR:500 × 20,267.96 | 10,133,980 IDR |
以2026年10月23日的示例为例,用 500 EUR 乘以所示交叉汇率 20,267.96,得到 10,133,980 IDR。这一金额使用的是计算中显示的四舍五入后的交叉汇率。当天直接的 EUR/IDR 报价为 20,268.1,用它会得到不同的汇率。
发布于。