币安实盘数字精度出现的bug

Author: leemon, Created: 2021-07-15 23:39:47, Updated:

下面是未成交订单返回的信息 [{“Info”:{“symbol”:“ALICEUSDT”,“status”:“PARTIALLY_FILLED”,“clientOrderId”:“x-PtW46NoE_20FD0D3794C8F944”,“executedQty”:“1.3”,“cumQuote”:“10.4819”,“type”:“LIMIT”,“reduceOnly”:false,“orderId”:708818902,“price”:“8.063”,“avgPrice”:“8.0630”,“origQty”:“11.6”,“closePosition”:false,“time”:1626332174412,“side”:“SELL”,“workingType”:“CONTRACT_PRICE”,“priceProtect”:false,“updateTime”:1626332174485,“timeInForce”:“GTC”,“positionSide”:“SHORT”,“stopPrice”:“0”,“origType”:“LIMIT”},“Id”:“708818902”,“Price”:8.063,“Amount”:11.6,“DealAmount”:1.3,“AvgPrice”:8.063,“Status”:0,“Type”:1,“Offset”:0,“ContractType”:“swap”}]

上面显示的是挂单数量为11.6,但只成交1.3个,然后再次卖出未成交的数量 但是两个数字srvOrder.Amount - srvOrder.DealAmount相减得出竟然得出 10.299999999999,而不是10.3 导致出现下面的精度溢出错误

Sell(8.054, 10.299999999999): 400: {“code”:-1111,“msg”:“Precision is over the maximum defined for this asset.”}

使用语言是JavaScript


More

17602119359 /upload/asset/185ac34677b649d192c6e.jpg 同样也出现了这个问题, 论坛里好像就你提了问题, 正在一脸懵逼中, 求问怎么解决的~

AAA386 轮询要多调精度,有的币种exchangeinfo调取都是错的,重新创建数组,添加进去吧

小草 是的, js,python都会出现这个问题,下单前再取下精度

czrui 一个有趣的精度bug :Log(0.056+0.52)

小草 麦语言参数里可以设置精度

ouroboros 麦语言也遇到同样的问题,请问怎么解决呢

17602119359 牛逼, 感谢 我试下 瑞思拜

leemon 精度溢出了,比如你这个价格126.0783的小数点有四位,但是该币种可能最多只支持最多三位,那就报错了,建议APP上看下这个币种的小数点是多少位,用函数_N()截取就行了

小草 大数会有问题,建议用字符串保存。原因你可以搜一下

leemon 精度可以调,但如果截取的话本来买10.3就截取成了10.2,exchangeinfo调取错误暂时没遇到过

leemon 为什么会出现这种bug呢?数据库存取数据也有问题,比如1626332174485这数值存入数据库,后台用Sqlite命令看数值没问题,但用代码读取出来这数值就变成了如1626332174380,后面几位数变了,数据库存取大数值基本都有这问题