Почему деление JSP/JSTL на 1000 иногда дает остаток?
При делении на 1000 я иногда сталкиваюсь с ошибкой, которая не делает деление "правильно". Например, при делении 90.55 на 1000 вместо получения.09055 я получаю.090549999999.
<c:out value="${bean.paPrice / 1000}" />
Почему это происходит? Это результат математики с плавающей точкой? Поиск в Google, казалось, показал, что это может быть виновником, но я не нашел конкретного ответа.
Чтобы исправить это, я могу округлить ответ до 5 цифр, но, похоже, это всего лишь патч для более глубокой проблемы.
<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice / 1000}" />
3 ответа
Решение
Это не проблема, это просто естественный результат двоичного представления с плавающей запятой. Округли свои ценности и не беспокойся об этом.
Почему компьютеры сосут в математике?
Да, это распространенная проблема формата с плавающей точкой.