Pregunta

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)?

¿Fue útil?

Solución

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="#" />

Otros consejos

Try this code:

<fmt:formatNumber value="${N+(1-(N%1))%1}" type="number" pattern="#"/>

where N is the name of your variable.

Regards

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top