Decimale precisie voor API-berekeningen

Laatst bijgewerkt: 26 jun 2025

Berekende versus weergegeven precisie

Interne API-berekeningen worden uitgevoerd met zoveel decimalen als nodig is, afhankelijk van de precisie van de betreffende valuta, maar weergegeven waarden worden soms afgerond/afgekapt om een bruikbare waarde te verkrijgen of voor opmaakdoeleinden.

Bitcoin (BTC)-berekeningen gebruiken bijvoorbeeld tot 10 decimalen (de maximaal bruikbare precisie voor BTC is 8 plaatsen), maar worden soms weergegeven met slechts 5 decimalen. Op dezelfde manier gebruiken Amerikaanse dollar (USD)-berekeningen tot 4 decimalen (de maximaal bruikbare precisie voor USD is uiteraard 2 plaatsen), maar worden vaak weergegeven met slechts 2 decimalen.

Het REST API Assets-eindpunt kan worden gebruikt om de maximale decimale precisie voor individuele valuta's te bepalen:

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

Zoals weergegeven, biedt het Assets-eindpunt de decimale precisie voor berekeningen via de velden 'decimals' en de decimale precisie voor weergave via de velden 'display_decimals'.

 

Lokale waarden matchen met API-waarden

Waarden die zijn afgeleid van lokale berekeningen (zoals het berekenen van balanswijzigingen op basis van de prijs en het volume van een transactie) hebben vaak meer decimalen dan nodig en moeten worden afgerond/afgekapt om overeen te komen met de waarden die door de API worden geleverd.

Een SHIB/USD-order om 50.123 SHIB te kopen voor $0,00002901 resulteert bijvoorbeeld in een transactie ter waarde van $1,45406823 (50.123 x 0,00002901 = 1,45406823), maar het REST API Ledgers-eindpunt toont aan dat het USD-saldo is afgenomen met een kleinere precisiewaarde van $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"}

De oplossing voor dit type discrepantie in decimale precisie is het afronden/afkappen van lokale waarden om overeen te komen met de decimale precisie die wordt geleverd door het REST API Assets-eindpunt.

Voortbordurend op het SHIB/USD-voorbeeld, geeft het Assets-eindpunt een USD-berekeningsprecisie van 4 aan (zie de vorige sectie hierboven), vandaar dat de lokaal berekende waarde van $1,45406823 ook moet worden afgerond/afgekapt tot een decimale precisie van 4:

  • 50.123 x 0,00002901 = 1,45406823 afgerond op 4 decimalen = 1,4541

Zoals weergegeven, komt de uiteindelijke waarde van $1,4541, door af te ronden/af te kappen tot de juiste decimale precisie, exact overeen met de waarde die door het Ledgers-eindpunt wordt geleverd, waardoor lokale waarden succesvol kunnen worden gematcht met API-waarden.

Meer hulp nodig?