问题
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)?
回答1:
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="#" />
回答2:
Try this code:
<fmt:formatNumber value="${N+(1-(N%1))%1}" type="number" pattern="#"/>
where N is the name of your variable.
Regards
来源:https://stackoverflow.com/questions/11735545/ceiling-of-a-number-in-jstl-el