API 计算的十进制精度

上次更新时间: 2025年6月26日

计算精度与显示精度

内部 API 计算会根据相关货币的精度使用尽可能多的小数位,但显示值有时会进行四舍五入/截断,以获得可用值或用于格式化目的。

例如,比特币 (BTC) 计算最多使用 10 位小数(BTC 的最大可用精度为 8 位),但有时仅显示 5 位小数。同样,美元 (USD) 计算最多使用 4 位小数(美元的最大可用精度当然是 2 位),但通常仅显示 2 位小数。

REST API 资产 端点可用于确定单个货币的最大小数精度:

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

如上所示,“资产”端点通过 decimals 字段提供计算小数精度,并通过 display_decimals 字段提供显示小数精度。

 

将本地值与 API 值匹配

从本地计算(例如根据交易价格和数量计算余额变化)得出的值通常具有比所需更多的小数位,需要进行四舍五入/截断以匹配 API 提供的值。

例如,以 0.00002901 美元的价格购买 50,123 SHIB 的 SHIB/USD 订单,交易价值为 1.45406823 美元(50,123 x 0.00002901 = 1.45406823),但 REST API 账本端点显示美元余额减少了精度较低的值 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"}

解决这种小数精度差异的方法是,对本地值进行四舍五入/截断,以匹配 REST API 资产端点提供的小数精度。

继续 SHIB/USD 的示例,资产端点指示美元计算精度为 4(参见上文),因此本地计算值 1.45406823 美元也应四舍五入/截断为 4 位小数精度:

  • 50,123 x 0.00002901 = 1.45406823 四舍五入到 4 位小数 = 1.4541

如上所示,通过四舍五入/截断到适当的小数精度,最终值 1.4541 美元与账本端点提供的值完全一致,从而成功地将本地值与 API 值匹配。

需要更多帮助吗?