Desetinná přesnost pro výpočty API

Naposledy aktualizováno: 26. června 2025

Vypočítaná versus zobrazená přesnost

Interní výpočty API se provádějí s tolika desetinnými místy, kolik je nutné v závislosti na přesnosti dané měny, ale zobrazené hodnoty jsou někdy zaokrouhleny/zkráceny, aby se dosáhlo použitelné hodnoty nebo pro účely formátování.

Například výpočty Bitcoin (BTC) používají až 10 desetinných míst (maximální použitelná přesnost pro BTC je 8 míst), ale někdy se zobrazují pouze s 5 desetinnými místy. Podobně výpočty US Dollar (USD) používají až 4 desetinná místa (maximální použitelná přesnost pro USD jsou samozřejmě 2 místa), ale často se zobrazují pouze se 2 desetinnými místy.

Endpoint REST API Assets lze použít k určení maximální desetinné přesnosti pro jednotlivé měny:

$ ./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}}}

Jak je ukázáno, endpoint Assets poskytuje desetinnou přesnost výpočtu prostřednictvím polí decimals a desetinnou přesnost zobrazení prostřednictvím polí display_decimals.

 

Porovnání lokálních hodnot s hodnotami API

Hodnoty odvozené z lokálních výpočtů (jako je výpočet změn zůstatku z ceny a objemu obchodu) mají často více desetinných míst, než je požadováno, a je třeba je zaokrouhlit/zkrátit, aby odpovídaly hodnotám poskytovaným API.

Například objednávka SHIB/USD na nákup 50 123 SHIB za 0.00002901 $ vede k obchodu v hodnotě 1.45406823 $ (50 123 x 0.00002901 = 1.45406823), ale endpoint REST API Ledgers ukazuje, že zůstatek USD se snížil o hodnotu s menší přesností 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"}

Řešením tohoto typu nesrovnalosti v desetinné přesnosti je zaokrouhlení/zkrácení lokálních hodnot tak, aby odpovídaly desetinné přesnosti poskytované endpointem REST API Assets.

Pokračujeme-li v příkladu SHIB/USD, endpoint Assets udává přesnost výpočtu USD 4 (viz předchozí sekce výše), proto by lokálně vypočítaná hodnota 1.45406823 $ měla být také zaokrouhlena/zkrácena na desetinnou přesnost 4:

  • 50 123 x 0.00002901 = 1.45406823 zaokrouhleno na 4 desetinná místa = 1.4541

Jak je ukázáno, zaokrouhlením/zkrácením na odpovídající desetinnou přesnost se konečná hodnota 1.4541 $ přesně shoduje s hodnotou poskytnutou endpointem Ledgers, což umožňuje úspěšné porovnání lokálních hodnot s hodnotami API.

Potřebujete další pomoc?