Comment arrondir un chiffre à JSTL?

je fais une division dans un JSP et je voudrais arrondir le résultat - Comment dois-je faire cela?

i.e.

<c:set
  var="expiry"
  value="${(expire.time - now.time) / (60 * 1000)}"/>

...comment faire pour arrondir le résultat?

Merci,

29
demandé sur Tim Büthe 2009-09-18 13:12:46

4 réponses

comme alternative:

<fmt:formatNumber var="expiry"
  value="${(expire.time - now.time) / (60 * 1000)}"
  maxFractionDigits="0" />

de cette façon, vous ne perdez pas la localisation (virgule et points).

54
répondu brabster 2011-06-08 11:53:44

j'ai utilisé:

${fn:substringBefore(expiry, '.')}

qui tronque plutôt que d'arrondir, mais cela peut être suffisant.

8
répondu mm2001 2009-11-03 16:53:21

Il peut ressembler à:

<c:set var="expire" value="100"/>
<c:set var="now" value="3"/>

<c:choose>
 <c:when test="${(expire mod now)!=0}">
  <c:set var="res" value="${(expire - (expire mod now))/now}"/>
  ${res}
 </c:when>
 <c:otherwise>
  <c:set var="res" value="${expire/now}"/>
  ${res}
 </c:otherwise>
</c:choose>

remarque: je pense que vous devriez utiliser mod de toute façon ou % fonctionnalité de jstl, j'utilise mod en exemple. Test,s'il vous plaît, "expire" et "maintenant", les variables avec des valeurs différentes, devrait fonctionner correctement.

2
répondu sergionni 2009-09-18 09:44:52

quid de ce sale hack:

<c:set
  var="expiry"
  value="${(((expire.time - now.time) / (60 * 1000) * 100) - 0.5) / 100.0}"/>

mais je le ferais dans un haricot et juste montrer le résultat ici. À côté de cela, vous pouvez définir les fonctions dans votre tld ou, si cela n'est pas pris en charge dans votre environnement d'obtenir des fonctions dans le langage d'expression par la mise en œuvre d'une Carte et de (ab)de l'utiliser. Vous implémentez la méthode get(Object) pour faire ce que vous voulez et l'appelez comme ceci:

<c:set
  var="expiry"
  value="${Helpers.round[(expire.time - now.time) / (60 * 1000)]"/>

Note, Helpers fournit une méthode " getRound ()" qui retourne votre carte application.

1
répondu Tim Büthe 2009-09-18 09:36:05