数字货币的最小单位是 1 乘 10 的负 8 次方,即 0.00000001,出现任何比小数点后 8 位小的则自动截取小数点后 8 位,不采用四舍五入的方法 交易所 MGD/BTC 这两种数字货币的交易 假设: 甲以 1 个 MGD=0.000494BTC 的价格购买 16000 个 MGD
即买入下单: 价格(BTC)0.000494 数量( MGD ) 16000 预计成交额 7.904BTC ( 0.000494* 16000 ) 下单时,系统冻结 7.904 个 BTC 用于购买 16000 个 MDG, 这笔订单在撮合交易系统里分别与乙和丙完成成交 乙、价格 0.000494 数量 11057.9159 成交 5.4626104546 截取八位 5.46261045 丙、价格 0.000494 数量 4942.0841 成交 2.4413895454 截取八位 2.44138954
则乙获得 5.46261045 个 BTC ;丙获得 2.44138954 个 BTC,双方共获得 7.90399999 而甲下单以后被冻结 7.904 个 BTC 并成功购买 16000 个 MGD 那么这 7.904-7.90399999=0.000000001 的误差如何来处理?
我们的方法是算作交易所的收益,但是否有可能某一种交易的情况下,需要交易所补贴类似这样 0.00000001 的情况? 而且交易数据是用户可查的,对于甲来说,两次交易分别显示花出 5.46261045 个 BTC 和 2.44138954 个 BTC,那么甲是否会找交易所问他的 0.00000001 个 BTC 哪里去了。
1
justfindu 2019-03-15 09:43:17 +08:00
一般他们会使用长整数来做, 然后业务自己处理倍数
|
3
subpo 2019-03-15 09:47:47 +08:00
实际 10 位,截取 8 位,剩余的不显示(但是记录下来),如果下次用户得到的货币可以补足,即可给用户提现
即 数据库记录的精度要大于实际逻辑处理的精度 |
4
leavic 2019-03-15 10:13:09 +08:00
一般就当交易所收益了,这种碎币很多交易所都有,总有那么几毛钱是拿不出来的。
|