Decimalpræcision for API-beregninger

Sidst opdateret: 26. juni 2025

Beregnet versus vist præcision

Interne API-beregninger udføres med så mange decimaler som nødvendigt afhængigt af den pågældende valutas præcision, men viste værdier afrundes/afkortes nogle gange for at opnå en brugbar værdi eller til formateringsformål.

For eksempel bruger Bitcoin (BTC)-beregninger op til 10 decimaler (den maksimale brugbare præcision for BTC er 8 decimaler), men vises nogle gange med kun 5 decimaler. Tilsvarende bruger US Dollar (USD)-beregninger op til 4 decimaler (den maksimale brugbare præcision for USD er naturligvis 2 decimaler), men vises ofte med kun 2 decimaler.

REST API'ets Assets-endepunkt kan bruges til at bestemme de maksimale decimalpræcisioner 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 giver Assets-endepunktet beregningsdecimalpræcisionerne via felterne decimals og giver visningsdecimalpræcisionerne via felterne display_decimals.

 

Afstemning af lokale værdier med API-værdier

Værdier afledt af lokale beregninger (såsom beregning af balanceændringer fra en trades pris og volumen) har ofte flere decimaler end nødvendigt og skal afrundes/afkortes for at matche de værdier, der leveres af API'en.

For eksempel resulterer en SHIB/USD-ordre om at købe 50.123 SHIB til $0,00002901 i en trade til en værdi af $1,45406823 (50.123 x 0,00002901 = 1,45406823), men REST API Ledgers-endepunktet viser, at USD-balancen faldt med en mindre præcisionsværdi 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 type uoverensstemmelse i decimalpræcision er at afrunde/afkorte lokale værdier for at matche den decimalpræcision, der leveres af REST API Assets-endepunktet.

Fortsætter man SHIB/USD-eksemplet, angiver Assets-endepunktet en USD-beregningspræcision på 4 (se forrige afsnit ovenfor), og derfor skal den lokalt beregnede værdi på $1,45406823 også afrundes/afkortes til en decimalpræcision på 4:

  • 50.123 x 0,00002901 = 1,45406823 afrundet til 4 decimaler = 1,4541

Som vist, ved at afrunde/afkorte til den passende decimalpræcision, svarer den endelige værdi på $1,4541 nøjagtigt til den værdi, der leveres af Ledgers-endepunktet, hvilket gør det muligt at matche lokale værdier med API-værdier med succes.

Har du brug for mere hjælp?