Почему деление JSP / JSTL на 1000 иногда дает остаток?

StackOverflow https://stackoverflow.com/questions/1002430

  •  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}" />
Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top