Я пишу финансовые приложения, где постоянно борюсь за решение использовать двойное и десятичное число.Десятичная и двойная скорость
Все мои математические произведения работают с числами не более 5 знаков после запятой и не больше ~ 100 000. У меня такое чувство, что все они могут быть представлены как двойники в любом случае без ошибки округления, но никогда не были уверены.
Я бы продолжил и сделал переход от десятичных знаков к удвоениям для очевидного преимущества скорости, за исключением того, что в конце дня я все еще использую метод ToString для передачи цен на биржи и должен всегда быть уверенным выводит число, которое я ожидаю. (89,99 вместо 89.99000000001)
Вопросы:
- ли преимущество в скорости действительно так велика, как наивные тесты показывают? (~ 100 раз)
- Есть ли способ гарантировать вывод из ToString, что я хочу? Неужели это подтверждается тем фактом, что мой номер всегда представлен?
ОБНОВЛЕНИЕ: Я должен обработать ~ 10 миллиардов обновлений цен до того, как мое приложение сможет работать, и я применил его с десятичной точностью прямо по очевидным соображениям защиты, но требуется около 3 часов, чтобы удвоить значительно сократить время моей работы. Есть ли безопасный способ сделать это с помощью парных?
Поскольку десятичные знаменатели силы 10, и бинарные знаменатели являются степенями 2, даже 1 десятичное место не может быть представлено без ошибок. Например, 0,1 (одна десятая) не имеет точного эквивалента в двоичном формате, что является тем же принципом, что и одна треть, не имеющая точного представления в десятичной системе. – 2011-07-28 00:22:54
Какое у вас узкое место? Точно, где вы сжигаете все свои циклы процессора? Без твердых измерений есть хорошая чакне, вы смотрите на совершенно неправильную вещь. – 2008-12-04 07:59:36