貨幣換算如何運作

使用匯率換算金額、處理反向換算,並區分參考換算金額與扣費後的實付金額。

一頭白色獨角鯨在小型兌換亭旁,身邊有兩枚不同的貨幣代幣。

計算前先寫出單位

先確認持有的金額、目標貨幣和匯率方向。在此範例中,來源貨幣為 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 和正值的十進位 amount。兩種貨幣必須不同。它會回傳輸入金額、選定匯率、換算金額、時間戳記、過時狀態和市場交易時段。實際回應取決於請求當下已接受的觀測值。

將 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 作為替代匯率。
  • 需要能重現計算結果時,請儲存金額、選定匯率、換算結果和觀測背景資訊。

來源與參考

發布日期: 。最近審閱日期: 。