Ceiling of a number in JSTL/EL
Вопрос
In JSTL,
<fmt:formatNumber value="${1.6}" type="number" pattern="#"/>
returns 2
and the following
<fmt:formatNumber value="${1.4}" type="number" pattern="#"/>
returns1
and I need 2
, a ceiling of a number.
Is there a direct way to achieve this in JSTL (or the only way to do so is by using an appropriate custom tag)?
Решение
The default rounding mode of DecimalFormat
that is used by <fmt:formatNumber>
is RoundingMode.HALF_EVEN
. There is no way to change that via any tag attribute. Just add 0.5
to the value when it's not an odd integer to make it to behave like RoundingMode.CEILING
.
<fmt:formatNumber value="${bean.number + (bean.number % 1 == 0 ? 0 : 0.5)}"
type="number" pattern="#" />
Другие советы
Try this code:
<fmt:formatNumber value="${N+(1-(N%1))%1}" type="number" pattern="#"/>
where N is the name of your variable.
Regards
Не связан с StackOverflow