0

価格がフロート/ダブルの場合、価格でオーダーブックをソートする良い方法は何ですか? 価格をキーオフして O(log(n)) を追加できるため、価格が整数の場合、二分木は正常に機能します。フロート/ダブルをキーオフするのは悪い考えであるか、少なくともリスクがあります。

4

1 に答える 1

4

まず、価格を整数として保存することをお勧めします。単位centsを 、penceöreまたはあなたの国のより小さい単位にするだけです。これにより、後で多くの頭痛が軽減されます。

しかし、 を作成しない限り、キーとしてif (x.price == y.price)使用しても問題ありません。priceソートの目的で、二分木はless than(またはgreater than) 比較のみを必要とし、これは浮動小数点値に対して完全に安全である必要があります。値は常に、他の値よりも小さいか大きいかのいずれかです。計算を行い、値が正確に等しいかどうかを判断しようとする場合にのみ、浮動小数点で問題が発生します。[または、2.46 を掛けてから 2.46 で割り、元の数値を引いて、正確にゼロを期待するなど、計算から正確な結果を期待する場合]

于 2013-06-12T15:43:58.647 に答える