Desimalpresisjon for API-beregninger

Sist oppdatert: 26. juni 2025

Beregnet versus vist presisjon

Interne API-beregninger utføres med så mange desimaler som nødvendig, avhengig av presisjonen til den aktuelle valutaen, men viste verdier blir noen ganger avrundet/avkortet for å oppnå en brukbar verdi eller for formateringsformål.

For eksempel bruker Bitcoin (BTC)-beregninger opptil 10 desimaler (maksimal brukbar presisjon for BTC er 8 plasser), men vises noen ganger med bare 5 desimaler. På samme måte bruker US Dollar (USD)-beregninger opptil 4 desimaler (maksimal brukbar presisjon for USD er selvfølgelig 2 plasser), men vises ofte med bare 2 desimaler.

REST API-endepunktet Assets kan brukes til å bestemme maksimal desimalpresisjon for individuelle valutaer:

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

Som vist gir Assets-endepunktet beregningsdesimalpresisjonen via decimals-feltene, og gir visningsdesimalpresisjonen via display_decimals-feltene.

 

Matche lokale verdier med API-verdier

Verdier avledet fra lokale beregninger (som å beregne balanseendringer fra en trades pris og volum) har ofte flere desimaler enn nødvendig, og må avrundes/avkortes for å matche verdiene som leveres av API-en.

For eksempel resulterer en SHIB/USD-ordre om å kjøpe 50 123 SHIB til $0,00002901 i en handel verdt $1,45406823 (50 123 x 0,00002901 = 1,45406823), men REST API Ledgers-endepunktet viser at USD-balansen reduserte med en mindre presisjonsverdi på $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"}

Løsningen på denne typen avvik i desimalpresisjon er å avrunde/avkorte lokale verdier for å matche desimalpresisjonen som leveres av REST API Assets-endepunktet.

For å fortsette SHIB/USD-eksemplet, indikerer Assets-endepunktet en USD-beregningspresisjon på 4 (se forrige avsnitt ovenfor), derfor bør den lokalt beregnede verdien på $1,45406823 også avrundes/avkortes til en desimalpresisjon på 4:

  • 50 123 x 0,00002901 = 1,45406823 avrundet til 4 desimaler = 1,4541

Som vist, ved å avrunde/avkorte til riktig desimalpresisjon, tilsvarer den endelige verdien på $1,4541 nøyaktig verdien som leveres av Ledgers-endepunktet, noe som gjør at lokale verdier kan matches med API-verdier på en vellykket måte.

Trenger du mer hjelp?