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