2010-10-11 4 views
7

Je veux poser une question sur le JSP et Java. J'écris la page JSP et j'ai une classe de haricots. Dans la classe, j'ai une fonction getter qui retournera une double var dans la page jsp. J'ai utilisé le code suivant pour afficher le numéro.Comment contrôler afficher le nombre de chiffres dans JSP?

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

Je pense que l'affichage sera comme le

the value of AB is 0.45 

suivante Cependant, l'affichage réel est le suivant

the value of AB is 0.4569877987 

Je veux seulement afficher les deux derniers chiffres. Que dois-je faire pour afficher ce que je veux? Dois-je modifier la page JSP ou la variable de classe Java? Je vous remercie.

Répondre

6

Vous pouvez utiliser un DecimalFormat pour formater la valeur comme une chaîne, par exemple:.

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

(le modèle suppose que vous voulez toujours deux chiffres dans la partie décimale, même si la partie décimale est égale à zéro Dans le cas contraire, utiliser #0.##)

Toutefois, en général, il est recommandé de ne pas appeler directement les constructeurs DecimalFormat. Au lieu de cela, la pratique recommandée est d'appeler l'une des méthodes d'usine de NumberFormat, puis personnaliser le modèle selon les besoins, par exemple:

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

Javadoc y compris des exemples:

Cela devrait fonctionner dans votre page 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> 

Voir également la réponse de Bozho pour obtenir le même résultat avec JSTL.

4

Pour répondre à votre dernière question - vous devez modifier la page JSP, puisque vous voulez changer la façon dont le nombre est affiché , pas ce que le nombre effectivement est. Pour ce faire, au lieu d'invoquer la méthode toString par défaut du nombre, vous pouvez utiliser un objet DecimalFormat pour convertir le nombre en texte dans le format de votre choix. Dans ce cas, vous souhaitez probablement utiliser:

new DecimalFormat("#0.##") 

comme chaîne de format.

Cependant, as per Bozho's answer il y a un tag JSTL pour cela, ce qui est une meilleure façon de résoudre votre problème.

12

Dans JSP, vous pouvez le faire en utilisant l'étiquette JSTL <fmt:formatNumber>.Vous pouvez définir un pettern (#0.##) ou maxFractionDigits="2"

Évitez d'utiliser du code Java dans les pages JSP - utilisez plutôt JSTL. See this tutorial. Et voir this question

Questions connexes