Потолок номера в JSTL/EL
В JSTL,
<fmt:formatNumber value="${1.6}" type="number" pattern="#"/>
возвращается 2
и следующее
<fmt:formatNumber value="${1.4}" type="number" pattern="#"/>
возвращается1
и мне нужно 2
потолок ряда.
Есть ли прямой способ добиться этого в JSTL (или единственный способ сделать это - использовать соответствующий пользовательский тег)?
2 ответа
Решение
Режим округления по умолчанию DecimalFormat
что используется <fmt:formatNumber>
является RoundingMode.HALF_EVEN
, Нет способа изменить это с помощью любого атрибута тега. Просто добавь 0.5
к значению, когда это не странное целое число, чтобы заставить его вести себя как RoundingMode.CEILING
,
<fmt:formatNumber value="${bean.number + (bean.number % 1 == 0 ? 0 : 0.5)}"
type="number" pattern="#" />
Попробуйте этот код:
<fmt:formatNumber value="${N+(1-(N%1))%1}" type="number" pattern="#"/>
где N - имя вашей переменной.
С уважением