Decimalprecision för API-beräkningar

Senast uppdaterad: 26 juni 2025

Beräknad kontra visad precision

Interna API-beräkningar utförs med så många decimaler som behövs beroende på den aktuella valutans precision, men visade värden avrundas/trunkeras ibland för att uppnå ett användbart värde eller för formateringsändamål.

Till exempel använder Bitcoin (BTC)-beräkningar upp till 10 decimaler (den maximala användbara precisionen för BTC är 8 platser), men visas ibland med endast 5 decimaler. På samma sätt använder US Dollar (USD)-beräkningar upp till 4 decimaler (den maximala användbara precisionen för USD är naturligtvis 2 platser), men visas ofta med endast 2 decimaler.

REST API-slutpunkten Assets kan användas för att bestämma maximal decimalprecision för enskilda valutor:

$ ./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 visas tillhandahåller Assets-slutpunkten beräkningsdecimalprecisionen via fälten `decimals` och visningsdecimalprecisionen via fälten `display_decimals`.

 

Matcha lokala värden med API-värden

Värden som härrör från lokala beräkningar (som att beräkna saldoförändringar från en trades pris och volym) har ofta fler decimaler än nödvändigt och måste avrundas/trunkeras för att matcha de värden som tillhandahålls av API:et.

Till exempel resulterar en SHIB/USD-order för att köpa 50 123 SHIB till 0,00002901 $ i en affär värd 1,45406823 $ (50 123 x 0,00002901 = 1,45406823), men REST API Ledgers-slutpunkten visar att USD-saldot minskade med ett mindre precisionsvärde 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å denna typ av avvikelse i decimalprecision är att avrunda/trunkera lokala värden för att matcha den decimalprecision som tillhandahålls av REST API Assets-slutpunkten.

För att fortsätta med SHIB/USD-exemplet indikerar Assets-slutpunkten en USD-beräkningsprecision på 4 (se föregående avsnitt ovan), därför bör det lokalt beräknade värdet på 1,45406823 $ också avrundas/trunkeras till en decimalprecision på 4:

  • 50 123 x 0,00002901 = 1,45406823 avrundat till 4 decimaler = 1,4541

Som visas, genom att avrunda/trunkera till lämplig decimalprecision, motsvarar det slutliga värdet på 1,4541 $ exakt det värde som tillhandahålls av Ledgers-slutpunkten, vilket gör att lokala värden kan matchas med API-värden framgångsrikt.

Behöver du mer hjälp?