Функция, которую вы ищете, уже реализована в библиотеке JavaMoney.
У нее есть класс FastMoney, который выполняет long
арифметику, что именно то, что вы просили.
Для новых разработчиков Java - почему длинная, а не двойная?
Арифметика с плавающей точкой в Java приводит к неожиданным ошибкам в точности из-за их реализации.Следовательно, это не рекомендуется в финансовых расчетах.
Также обратите внимание, что это отличается от потери точности в арифметических вычислениях long
, которая связана с тем, что дробная часть не сохраняется в лонге.Этого можно избежать во время реализации, переместив дробную часть в другой длинный (например, 1,05 -> 1 доллар и 5 центов).
Ссылки
Краткое руководство
Сайт проекта