Precyzja dziesiętna dla obliczeń API

Ostatnia aktualizacja: 26 cze 2025

Obliczona a wyświetlana precyzja

Wewnętrzne obliczenia API są wykonywane z użyciem tylu miejsc dziesiętnych, ile jest to konieczne, w zależności od precyzji danej waluty, ale wyświetlane wartości są czasami zaokrąglane/obcinane w celu uzyskania użytecznej wartości lub w celach formatowania.

Na przykład, obliczenia Bitcoina (BTC) wykorzystują do 10 miejsc dziesiętnych (maksymalna użyteczna precyzja dla BTC to 8 miejsc), ale czasami są wyświetlane z użyciem tylko 5 miejsc dziesiętnych. Podobnie, obliczenia dolara amerykańskiego (USD) wykorzystują do 4 miejsc dziesiętnych (maksymalna użyteczna precyzja dla USD to oczywiście 2 miejsca), ale często są wyświetlane z użyciem tylko 2 miejsc dziesiętnych.

Punkt końcowy REST API Assets może być użyty do określenia maksymalnej precyzji dziesiętnej dla poszczególnych walut:

$ ./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 pokazano, punkt końcowy Assets dostarcza precyzję dziesiętną obliczeń za pośrednictwem pól decimals, a precyzję dziesiętną wyświetlania za pośrednictwem pól display_decimals.

 

Dopasowywanie wartości lokalnych do wartości API

Wartości pochodzące z obliczeń lokalnych (takich jak obliczanie zmian salda na podstawie ceny i wolumenu transakcji) często mają więcej miejsc dziesiętnych niż jest to wymagane i muszą być zaokrąglone/obcięte, aby odpowiadały wartościom dostarczonym przez API.

Na przykład, zlecenie SHIB/USD na zakup 50 123 SHIB po cenie 0,00002901 USD skutkuje transakcją o wartości 1,45406823 USD (50 123 x 0,00002901 = 1,45406823), ale punkt końcowy REST API Ledgers pokazuje, że saldo USD zmniejszyło się o wartość o mniejszej precyzji, wynoszącą 1,4541 USD:

"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"}

Rozwiązaniem tego typu rozbieżności w precyzji dziesiętnej jest zaokrąglanie/obcinanie wartości lokalnych w celu dopasowania ich do precyzji dziesiętnej dostarczonej przez punkt końcowy REST API Assets.

Kontynuując przykład SHIB/USD, punkt końcowy Assets wskazuje precyzję obliczeń USD na 4 miejsca (patrz poprzednia sekcja powyżej), dlatego lokalnie obliczona wartość 1,45406823 USD powinna również zostać zaokrąglona/obcięta do precyzji dziesiętnej 4 miejsc:

  • 50 123 x 0,00002901 = 1,45406823 zaokrąglone do 4 miejsc = 1,4541

Jak pokazano, poprzez zaokrąglenie/obcięcie do odpowiedniej precyzji dziesiętnej, końcowa wartość 1,4541 USD dokładnie odpowiada wartości dostarczonej przez punkt końcowy Ledgers, co pozwala na pomyślne dopasowanie wartości lokalnych do wartości API.

Potrzebujesz więcej pomocy?