当价格为浮动/双打时,对价格进行排序的好方法是什么?当价格为整数时,二叉树可以正常工作,因为您可以关闭价格并获得O(log(n))。关键的浮动/双打是一个坏主意或者至少是冒险的。
答案 0 :(得分:4)
首先,我建议将价格存储为整数。只需制作单位cents
,pence
,öre
或您所在国家/地区较小的单位,或者甚至是主要货币的1/1000或1/10000。这将在以后节省很多头痛。
但只要您不制作if (x.price == y.price)
,就可以使用price
作为关键字。出于排序目的,二叉树仅需要less than
(或greater than
)比较,这对于浮点值应该是完全安全的。值总是小于或大于某个其他值。只有当你进行计算并尝试确定值是否精确相等时,才会出现浮点问题。 [或者当您期望计算得到精确结果时,例如乘以2.46,然后除以2.46然后减去原始数字,并期望恰好为零]