Точність десяткових знаків для розрахунків API

Останнє оновлення: 26 черв. 2025 р.

Розрахована проти відображуваної точності

Внутрішні розрахунки API виконуються з використанням стількох знаків після коми, скільки необхідно залежно від точності відповідної валюти, але відображувані значення іноді округлюються/обрізаються для досягнення придатного значення або для цілей форматування.

Наприклад, розрахунки Bitcoin (BTC) використовують до 10 знаків після коми (максимальна придатна точність для BTC становить 8 знаків), але іноді відображаються лише з 5 знаками після коми. Аналогічно, розрахунки долара США (USD) використовують до 4 знаків після коми (максимальна придатна точність для USD, звичайно, становить 2 знаки), але часто відображаються лише з 2 знаками після коми.

Кінцева точка REST API Assets може бути використана для визначення максимальної точності десяткових знаків для окремих валют:

$ ./krakenapi Assets asset=xbt,usd

{"error":[],"result":{"XXBT":{"aclass":"currency","altname":"XBT","decimals":10,"display_decimals":5},"ZUSD":{"aclass":"currency","altname":"USD","decimals":4,"display_decimals":2}}}

Як показано, кінцева точка Assets надає точність десяткових знаків для розрахунків через поля decimals, а також надає точність відображення десяткових знаків через поля display_decimals.

 

Зіставлення локальних значень зі значеннями API

Значення, отримані з локальних розрахунків (наприклад, розрахунок змін балансу на основі ціни та обсягу угоди), часто мають більше знаків після коми, ніж потрібно, і їх необхідно округлити/обрізати, щоб вони відповідали значенням, наданим API.

Наприклад, ордер SHIB/USD на купівлю 50 123 SHIB за $0,00002901 призводить до угоди вартістю $1,45406823 (50 123 x 0,00002901 = 1,45406823), але кінцева точка REST API Ledgers показує, що баланс USD зменшився на менше точне значення $1,4541:

"L2A7BN-OLRUR-DGZH7F":{"refid":"T5JORM-HM432-GQ3RGY","time":1639991413.4671,"type":"trade","subtype":"","aclass":"currency","asset":"ZUSD","amount":"-1.4541","fee":"0.0000","balance":"124.7277"}

Рішенням для такого типу розбіжностей у точності десяткових знаків є округлення/обрізання локальних значень, щоб вони відповідали точності десяткових знаків, наданій кінцевою точкою REST API Assets.

Продовжуючи приклад SHIB/USD, кінцева точка Assets вказує точність розрахунку USD 4 (див. попередній розділ вище), отже, локально розраховане значення $1,45406823 також має бути округлене/обрізане до точності десяткових знаків 4:

  • 50 123 x 0,00002901 = 1,45406823 округлено до 4 знаків після коми = 1,4541

Як показано, шляхом округлення/обрізання до відповідної точності десяткових знаків, кінцеве значення $1,4541 точно відповідає значенню, наданому кінцевою точкою Ledgers, що дозволяє успішно зіставляти локальні значення зі значеннями API.

Потрібна додаткова допомога?