Знаю, что есть класс BigDecimal в котором можно хранить деньги без потери точности. Но хочу конкретно разобраться при каких действиях float и double теряют точность ( отклоняются от изначального значения или не соответствуют ожидаемому результату). Плюс к вопросу хочу уточнить - есть ли вероятность потери точности, при присвоении переменной double значения. Вот набросал класс для хранения денег gist.github.com/cherniavskyeo/5d1a46931a2ed8bcb8043d3e5616b763 подскажите пожалуйста где может быть потеря точности, меня больше всего смущает метод getAmount(). Главная задача получить обратно ту сумму которую сохранил.
Double вполне достаточен для любых практических операций с деньгами, если они не зимбабвийские. Потеря точности происходит, когда число нельзя представить в виде конечной суммы степеней двойки. Класс посмотрел - не катит этот класс. С какого перепуга он все сразу округляет? Очень часто нужно хранить некие промежуточные расчеты с максимальной точностью, затем произвести какие-то действия с ними, и только потом округлить. Так что забей, Double - наше все.