Выбор ответа Junior Основы: типы, обёртки, static спрашивают часто обновлено
Деньги в double
Вопрос
Какой тип выбрать для денежных сумм в Java?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: BigDecimal (или целые копейки в long). double и float хранят двоичные дроби, 0.1 в них не представимо точно, ошибки округления накапливаются.
Варианты ответа
double: у него 15-16 значащих цифр, этого хватаетBigDecimal(или целые копейки вlong)правильный ответfloat: экономит памятьDouble: обёртка хранит точное значение
Разбор
double и float хранят двоичные дроби, 0.1 в них не представимо точно, ошибки округления накапливаются. BigDecimal хранит десятичное число точно и даёт явный контроль округления (setScale, RoundingMode). Создавать его стоит из строки или через BigDecimal.valueOf(double), а не new BigDecimal(0.1). Обёртка Double хранит то же двоичное значение, что и примитив.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.