当价格是浮动的时候排序订单

Sort orderbook when prices are floats

本文关键字:排序 候排序      更新时间:2023-10-16

当价格为float/double时,对订单进行排序的好方法是什么?二叉树在价格为整数的情况下工作得很好,因为你可以按下价格键,得到O(log(n))的加法。按下浮点数/双精度数键是个坏主意,或者至少有风险。

首先,我建议将价格存储为整数。把单位设为centspenceöre或任何你国家的小单位——甚至是主要货币的1/1000或1/10000。这将省去以后的很多麻烦。

但是只要您不制作if (x.price == y.price),使用price作为密钥是完全可以的。出于排序的目的,二叉树只需要less than(或greater than)比较,这对于浮点值应该是完全安全的。一个值总是小于或大于其他值。只有当您进行计算并尝试确定值是否精确相等时,才会遇到浮点问题。[或者当您期望从计算中得到确切的结果,例如乘以2.46,然后除以2.46,然后减去原始数字,并期望完全为零]