计算前先写出单位
先确定已有金额、目标货币和汇率方向。在这个示例中,源货币为 EUR,目标货币为 USD,汇率为每 EUR 兑换 1.08765 USD。这是用于演示计算的虚构汇率。
EUR 到 USD 的示例换算
Source amount: 250.00 EUR
Rate: 1.08765 USD/EUR
Unrounded result: 271.91250 USD
Two-decimal result: 271.91 USD如果汇率指向相反方向,就用除法
如果你有 USD 250,而唯一可用的报价是每 EUR 兑换 1.25 USD,就用 250 除以 1.25,得到 EUR 200。此时相乘会算错换算方向。
一个快速的合理性检查可以发现许多方向错误:按这个示例汇率,一欧元的价值高于一美元,因此欧元金额应小于美元金额。
从 Narwhal 请求换算
换算端点接收 from、to 和正的十进制金额。两种货币必须不同。它返回输入金额、选定汇率、换算金额、时间戳、过时状态和市场交易时段。实际响应取决于请求时已接受的观测值。
将 USD 100 换算为 JPY
curl --request GET \
--url "https://api.narwhalapi.com/v1/fx/convert?from=USD&to=JPY&amount=100.00" \
--header "Authorization: Bearer $NARWHAL_API_KEY"分开处理计算金额和支付金额
参考换算可用于比较或展示。支付服务实际交付的金额可能不同,因为它采用自己的汇率、费用和舍入规则。例如,ECB 将其参考汇率标为仅供参考,并不鼓励将其用于交易。
以下是一个明确在换算前从源货币扣除费用的示例费用计算。换算后收取费用需要使用不同的公式。
费用处理示例,不是 API 结果
Source balance: 100.00 USD
Fee deducted before FX: 2.00 USD
Amount actually converted: 98.00 USD
Provider rate: 0.90 EUR/USD
Recipient amount: 88.20 EUR只舍入一次结果
Narwhal 的换算规范使用十进制运算,并采用银行家舍入法,舍入至目标货币 ISO 4217 的最小单位。汇率精度和货币金额精度用途不同:不要先将汇率的小数位数缩减到金额所用的位数。
请将返回的汇率和换算金额一起保留。使用为显示而舍入后的汇率重新计算,可能会与 API 结果出现明显差异。
验证输入并保存结果上下文
将换算结果展示为当前数据前,请检查返回的时间戳和 stale 标志。请求成功并不表示汇率是在你点击的那一刻观测到的。
- 发送未格式化的十进制字符串,不要发送带货币符号或千位分隔符的数字。
- 计算前确认源货币和目标货币的代码。
- 将不支持的货币和无效金额作为错误处理;不要用 1 作为替代汇率。
- 需要复现结果时,保存金额、选定汇率、换算结果和观测时的相关信息。
来源与参考
发布于 。最近核查于 。

