Сортировать книгу заказов, когда цены плавают

Какой хороший способ сортировать книгу заказов по цене, когда цены плавают / удваиваются? Двоичное дерево работает нормально, когда цены целые, потому что вы можете отключить цену и получить O (log (n)) add. Это плохая идея или, по крайней мере, рискованно отключать поплавки / удвоения.

0

Решение

Прежде всего, я бы предложил хранить цены в виде целых чисел. Просто сделайте блок cents, pence, öre или какая-либо меньшая единица в вашей стране — или даже 1/1000-я или 1/10000-я основная валюта. Это сэкономит много головной боли позже.

Но пока вы не делаете if (x.price == y.price), это прекрасно в использовании price в качестве ключа. Для сортировки двоичное дерево нуждается только в less than (или же greater than) сравнение, которое должно быть абсолютно безопасным для значений с плавающей запятой. Значение всегда меньше или больше некоторого другого значения. Только когда вы делаете расчеты и пытаетесь определить, точно ли значение равно, вы получаете проблемы с плавающей запятой. [Или когда вы ожидаете точный результат от вычислений, таких как умножение на 2,46, затем деление на 2,46, а затем вычитание исходного числа и ожидание ровно нуля]

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]