2010-10-11 15 views
7

Voglio porre una domanda su JSP e Java. Sto scrivendo la pagina JSP e ho una classe bean. Nella classe, ho una funzione getter che restituirà una doppia var nella pagina jsp. Ho usato il seguente codice per visualizzare il numero.Come controllare di visualizzare il numero di cifre in JSP?

<p> the value of AB is <%=obj.getValue() %> <p> 

Mi aspetto che mostra sarà come la seguente

the value of AB is 0.45 

Tuttavia, il vero display è il seguente

the value of AB is 0.4569877987 

voglio solo per visualizzare le ultime due cifre. Cosa dovrei fare per mostrare ciò che voglio. Dovrei modificare la pagina JSP o la variabile di classe Java? grazie.

risposta

6

è possibile utilizzare un DecimalFormat per formattare il valore come una stringa, ad esempio:.

DecimalFormat df = new DecimalFormat("#0.00"); 

(il modello presuppone che si desidera sempre due cifre nella parte frazionaria, anche se la parte frazionaria è pari a zero, altrimenti, utilizzare #0.##)

Tuttavia in generale si consiglia di non chiamare direttamente i costruttori DecimalFormat. Invece, la pratica raccomandata è di chiamare uno dei metodi di fabbrica di NumberFormat, quindi personalizzare il modello secondo necessità, ad esempio:

NumberFormat nf = NumberFormat.getInstance(); 
nf.setMaximumFractionDigits(2); 
nf.setMinimumFractionDigits(2); 

Javadoc compresi esempi:

Questo dovrebbe funzionare nella pagina JSP:

<%@ page import="java.text.NumberFormat" %> 
<% 
    NumberFormat nf = NumberFormat.getInstance(); 
    nf.setMaximumFractionDigits(2); 
    nf.setMinimumFractionDigits(2); 
%> 

[...] 

<p> the value of AB is <%= nf.format(obj.getValue()) %> <p> 

Vedere anche la risposta di Bozho per un modo per ottenere lo stesso risultato utilizzando JSTL.

4

Per rispondere alla tua ultima domanda prima - si dovrebbe modificare la pagina JSP, dal momento che si desidera modificare come il numero è visualizzata, non ciò che in realtà il numero è .

Per fare ciò, anziché richiamare il metodo toString predefinito del numero, è possibile utilizzare un oggetto DecimalFormat per convertire il numero in testo nel formato desiderato. In questo caso, probabilmente si desidera utilizzare:

new DecimalFormat("#0.##") 

come stringa di formato.

Tuttavia, as per Bozho's answer c'è un tag JSTL per raggiungere questo, che è un modo migliore per risolvere il tuo problema.

Problemi correlati