Почему деление JSP / JSTL на 1000 иногда дает остаток? - PullRequest
2 голосов
/ 16 июня 2009

При делении на 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 ]

3 голосов
/ 16 июня 2009

Это не проблема, это просто естественный результат двоичного представления с плавающей запятой. Округли свои ценности и не беспокойся об этом.

2 голосов
/ 16 июня 2009

Почему компьютеры сосут математику?

http://www.codinghorror.com/blog/archives/001266.html

1 голос
/ 16 июня 2009

Да, это распространенный формат с плавающей запятой проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...