Precisión decimal para cálculos de API

Última actualización: 26 jun 2025

Precisión calculada frente a precisión mostrada

Los cálculos internos de la API se realizan utilizando tantos decimales como sea necesario, dependiendo de la precisión de la divisa en cuestión, pero los valores mostrados a veces se redondean o truncan para obtener un valor utilizable o con fines de formato.

Por ejemplo, los cálculos de Bitcoin (BTC) utilizan hasta 10 decimales (la precisión máxima utilizable para BTC es de 8 decimales), pero a veces se muestran utilizando solo 5 decimales. Del mismo modo, los cálculos de Dólar estadounidense (USD) utilizan hasta 4 decimales (la precisión máxima utilizable para USD es, por supuesto, de 2 decimales), pero a menudo se muestran utilizando solo 2 decimales.

El endpoint Assets de la API REST se puede utilizar para determinar la precisión decimal máxima de las divisas individuales:

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

Como se muestra, el endpoint Assets proporciona las precisiones decimales de cálculo a través de los campos decimals, y proporciona las precisiones decimales de visualización a través de los campos display_decimals.

 

Coincidencia de valores locales con valores de la API

Los valores derivados de cálculos locales (como el cálculo de los cambios de saldo a partir del precio y el volumen de una operación) a menudo tienen más decimales de los necesarios, y deben redondearse o truncarse para que coincidan con los valores proporcionados por la API.

Por ejemplo, una orden SHIB/USD para comprar 50,123 SHIB a $0.00002901 da como resultado una operación por valor de $1.45406823 (50,123 x 0.00002901 = 1.45406823), pero el endpoint Ledgers de la API REST muestra que el saldo en USD disminuyó en un valor de precisión menor 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 solución a este tipo de discrepancia en la precisión decimal es redondear o truncar los valores locales para que coincidan con la precisión decimal proporcionada por el endpoint Assets de la API REST.

Continuando con el ejemplo de SHIB/USD, el endpoint Assets indica una precisión de cálculo de USD de 4 (véase la sección anterior), por lo que el valor calculado localmente de $1.45406823 también debe redondearse o truncarse a una precisión decimal de 4:

  • 50,123 x 0.00002901 = 1.45406823 redondeado a 4 decimales = 1.4541

Como se muestra, al redondear o truncar a la precisión decimal adecuada, el valor final de $1.4541 corresponde exactamente al valor proporcionado por el endpoint Ledgers, lo que permite que los valores locales coincidan con los valores de la API correctamente.

¿Necesita más ayuda?