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