2012-07-31 17 views
16

In JSTL,soffitto di un numero in JSTL/EL

<fmt:formatNumber value="${1.6}" type="number" pattern="#"/> 

rendimenti 2 e il seguente

<fmt:formatNumber value="${1.4}" type="number" pattern="#"/> 

rendimenti 1 e ho bisogno 2, un soffitto di un numero.

C'è un modo diretto per ottenere questo in JSTL (o l'unico modo per farlo è utilizzando un tag personalizzato appropriato)?

risposta

21

default modalità di DecimalFormat che viene utilizzato da <fmt:formatNumber> arrotondamento è RoundingMode.HALF_EVEN. Non c'è modo di cambiarlo tramite qualsiasi attributo di tag. Basta aggiungere 0.5 al valore quando non è un numero intero dispari per farlo comportarsi come RoundingMode.CEILING.

<fmt:formatNumber value="${bean.number + (bean.number % 1 == 0 ? 0 : 0.5)}" 
    type="number" pattern="#" /> 
4

provare questo codice:

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

dove N è il nome della variabile.

saluti

+0

La cosa buona di questo metodo è che puoi facilmente trasformarlo in arrotondamento a pavimento semplicemente cambiandolo a $ {N- (1- (N% 1))% 1} '. – AxeEffect

+0

non intendi $ {N- (N% 1)} @AxeEffect? – kacpr