Потолок номера в 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 - имя вашей переменной.

С уважением

Другие вопросы по тегам