Я пишу финансовые приложения, где постоянно борюсь за решение использовать двойное и десятичное число.
Вся моя математика работает с числами не более 5 знаков после запятой и не превышает ~ 100 000. У меня такое ощущение, что все они могут быть представлены как двойники в любом случае без ошибок округления, но никогда не были уверены.
Я бы продолжил и сделал переход от десятичных знаков к удвоениям для очевидного преимущества скорости, за исключением того, что в конце дня я все еще использую метод ToString для передачи цен на биржи и должен убедиться, что он всегда выводит число, которое я ожидаю. (89,99 вместо 89,99000000001)
Вопросы:
- Является ли преимущество скорости действительно таким же большим, как предполагают наивные тесты? (~ 100 раз)
- Есть ли способ гарантировать, что вывод из ToString будет тем, что я хочу? Это подтверждается тем фактом, что мое число всегда представимо?
ОБНОВЛЕНИЕ: мне нужно обработать ~ 10 миллиардов обновлений цен до того, как мое приложение сможет запускаться, и я применил его с десятичной точностью прямо по очевидным соображениям защиты, но для включения требуется ~ 3 часа, удвоения резко сократят мои время включения. Есть ли безопасный способ сделать это с помощью парных?