Я пытаюсь создать краткий обзор того, какие варианты точных вычислений у нас есть в JAVA + SQL. Пока нашел следующие варианты:
- использовать двойников, принимая их недостатки, не идти.
- use BigDecimals
- using them in complicated formulas is problematic for me
- use String.format/Decimal.format to round doubles
- do i need to round each variable in formula or just result to get BigDecimal precision?
- как это можно подправить?
- use computed fields option in SQL.
- drawback is that I'd need dynamic SQL to pull data from different tables + calculate fields on other calculated fields and that would get messy
любые другие варианты?
Постановка задачи: мне нужны точные финансовые расчеты, в которых использовались бы очень большие (миллиарды) и очень маленькие числа (0,0000004321), а также деление значений, которые очень похожи друг на друга, поэтому мне наверняка нужна точность BigDecimal.
С другой стороны, я хочу сохранить простоту использования, которую имеют двойники в функциях (я работаю с массивами из десятичных данных SQL), поэтому такие вычисления, как: (a[i] - b[i])/b[i] и т.д. и т. д., которые в дальнейшем используются в других расчетах. и я хотел бы, чтобы пользователи могли создавать свои собственные формулы по мере необходимости (используя общие математические операторы)
я стремлюсь использовать решение «форматирования» для String.format, но это делает код не очень читаемым (используя String.format() для каждой переменной...).
Большое спасибо за подсказку, как с этим бороться.