Précision décimale pour les calculs API

Dernière mise à jour : 26 juin 2025

Précision calculée versus précision affichée

Les calculs internes de l'API sont effectués en utilisant autant de décimales que nécessaire en fonction de la précision de la devise en question, mais les valeurs affichées sont parfois arrondies/tronquées pour obtenir une valeur utilisable ou à des fins de formatage.

Par exemple, les calculs du Bitcoin (BTC) utilisent jusqu'à 10 décimales (la précision maximale utilisable pour le BTC est de 8 décimales), mais sont parfois affichés avec seulement 5 décimales. De même, les calculs du dollar américain (USD) utilisent jusqu'à 4 décimales (la précision maximale utilisable pour l'USD est bien sûr de 2 décimales), mais sont souvent affichés avec seulement 2 décimales.

Le point de terminaison Assets de l'API REST peut être utilisé pour déterminer les précisions décimales maximales pour les devises individuelles :

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

Comme indiqué, le point de terminaison Assets fournit les précisions décimales de calcul via les champs decimals, et fournit les précisions décimales d'affichage via les champs display_decimals.

 

Correspondance des valeurs locales avec les valeurs de l'API

Les valeurs dérivées de calculs locaux (tels que le calcul des changements de solde à partir du prix et du volume d'une transaction) ont souvent plus de décimales que nécessaire, et doivent être arrondies/tronquées pour correspondre aux valeurs fournies par l'API.

Par exemple, un ordre SHIB/USD pour acheter 50 123 SHIB à 0,00002901 $ entraîne une transaction d'une valeur de 1,45406823 $ (50 123 x 0,00002901 = 1,45406823 $), mais le point de terminaison Ledgers de l'API REST montre que le solde USD a diminué d'une valeur de précision inférieure de 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 solution à ce type d'écart de précision décimale est d'arrondir/tronquer les valeurs locales pour qu'elles correspondent à la précision décimale fournie par le point de terminaison Assets de l'API REST.

En poursuivant l'exemple SHIB/USD, le point de terminaison Assets indique une précision de calcul USD de 4 (voir la section précédente ci-dessus), par conséquent, la valeur calculée localement de 1,45406823 $ doit également être arrondie/tronquée à une précision décimale de 4 :

  • 50 123 x 0,00002901 = 1,45406823 arrondi à 4 décimales = 1,4541

Comme indiqué, en arrondissant/tronquant à la précision décimale appropriée, la valeur finale de 1,4541 $ correspond exactement à la valeur fournie par le point de terminaison Ledgers, permettant ainsi de faire correspondre avec succès les valeurs locales aux valeurs de l'API.

Besoin d’aide supplémentaire ?