当价格为浮动/双倍价格时,对价目表进行排序的好方法是什么?当价格为整数时,二叉树可以正常工作,因为您可以取消价格并获得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++ - 价格 float 时对订单排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17069573/