Вопрос

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

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