当价格是浮动的时候排序订单
Sort orderbook when prices are floats
当价格为float/double时,对订单进行排序的好方法是什么?二叉树在价格为整数的情况下工作得很好,因为你可以按下价格键,得到O(log(n))的加法。按下浮点数/双精度数键是个坏主意,或者至少有风险。
首先,我建议将价格存储为整数。把单位设为cents
、pence
、öre
或任何你国家的小单位——甚至是主要货币的1/1000或1/10000。这将省去以后的很多麻烦。
但是只要您不制作if (x.price == y.price)
,使用price
作为密钥是完全可以的。出于排序的目的,二叉树只需要less than
(或greater than
)比较,这对于浮点值应该是完全安全的。一个值总是小于或大于其他值。只有当您进行计算并尝试确定值是否精确相等时,才会遇到浮点问题。[或者当您期望从计算中得到确切的结果,例如乘以2.46,然后除以2.46,然后减去原始数字,并期望完全为零]
相关文章:
- 合并排序不排序自创建数组类 c++
- 使用 Key 对 C++ 中的哈希映射进行排序. 无法排序
- std::排序为排序自定义对象时出现的向量引发错误
- 队列快速排序不排序和打印随机字符串[C ]
- 插入排序中途排序
- C 排序无法排序一组字符串
- C 选择排序不排序
- 气泡排序不排序
- C++:使用 LSD 基数排序字符串排序崩溃
- C 样式的字符串排序与排序和 qsort
- C++ 快速排序不排序
- 如何对包含 pair<int,int> 元素的向量进行排序?排序是根据比较功能完成的
- Introsort(快速排序+堆排序)实现和复杂性
- 用于排序/操作/排序的最佳替代算法
- 没有严格弱排序的排序集
- STL:指针关联排序容器:排序谓词模板
- 排序和排序有什么区别?
- 寻找c++快速排序/插入排序组合中的错误
- 冒泡排序不排序最后一个数字与此算法
- 选择排序不排序第一个值