Precisione decimale per i calcoli API

Ultimo aggiornamento: 26 giu 2025

Precisione calcolata rispetto a quella visualizzata

I calcoli interni dell'API vengono eseguiti utilizzando il numero di cifre decimali necessarie a seconda della precisione della valuta in questione, ma i valori visualizzati vengono talvolta arrotondati/troncati per ottenere un valore utilizzabile o per scopi di formattazione.

Ad esempio, i calcoli di Bitcoin (BTC) utilizzano fino a 10 cifre decimali (la massima precisione utilizzabile per BTC è di 8 cifre), ma a volte vengono visualizzati utilizzando solo 5 cifre decimali. Allo stesso modo, i calcoli in dollari USA (USD) utilizzano fino a 4 cifre decimali (la massima precisione utilizzabile per USD è ovviamente di 2 cifre), ma vengono spesso visualizzati utilizzando solo 2 cifre decimali.

L'endpoint REST API Assets può essere utilizzato per determinare la massima precisione decimale per le singole valute:

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

Come mostrato, l'endpoint Assets fornisce le precisioni decimali di calcolo tramite i campi "decimals" e fornisce le precisioni decimali di visualizzazione tramite i campi "display_decimals".

 

Corrispondenza dei valori locali con i valori API

I valori derivati da calcoli locali (come il calcolo delle variazioni di saldo dal prezzo e dal volume di una transazione) spesso hanno più cifre decimali del necessario e devono essere arrotondati/troncati per corrispondere ai valori forniti dall'API.

Ad esempio, un ordine SHIB/USD per l'acquisto di 50,123 SHIB a $0.00002901 si traduce in una transazione del valore di $1.45406823 (50,123 x 0.00002901 = 1.45406823), ma l'endpoint REST API Ledgers mostra che il saldo USD è diminuito di un valore di precisione inferiore di $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"}

La soluzione a questo tipo di discrepanza nella precisione decimale è arrotondare/troncare i valori locali per farli corrispondere alla precisione decimale fornita dall'endpoint REST API Assets.

Continuando l'esempio SHIB/USD, l'endpoint Assets indica una precisione di calcolo USD di 4 (vedi la sezione precedente), quindi il valore calcolato localmente di $1.45406823 dovrebbe essere anch'esso arrotondato/troncato a una precisione decimale di 4:

  • 50,123 x 0.00002901 = 1.45406823 arrotondato a 4 cifre decimali = 1.4541

Come mostrato, arrotondando/troncando alla precisione decimale appropriata, il valore finale di $1.4541 corrisponde esattamente al valore fornito dall'endpoint Ledgers, consentendo di abbinare con successo i valori locali con i valori API.

Hai ancora bisogno di aiuto?