JSTL arrondir/nombre
Cela peut être une question stupide, mais disons que j'ai une variable seconds
dans ma page JSP et sa valeur est de 779. Maintenant, je veux le convertir en minutes et secondes en procédant de la manière suivante:
<c:set var="${seconds /60}" value="min"/>
<c:set var="${seconds mod 60}" value="sec">
Cette façon, je reçois min = 12.983333 et sec = 59.0.
Maintenant, je veux fusionner les deux et affiche le résultat comme 12:59. Le problème, je suis confronté est que min
cesse de s'arrondi à 13. J'ai essayé beaucoup de choses, comme:
<fmt:parseNumber var="minutes" integerOnly="true" type="number" value="${min}" />
<fmt:formatNumber type="number" pattern="###" value="${min}" var="minutes" />
fn:substringBefore(min, '.')
maxFractionDigits="0"
//and so on...
Mais tous juste de retour de 13 constamment. Je suis un peu naïf à ce point. Mais j'ai peut-être raté quelque chose. J'espère que quelqu'un ici a une idée, ou une allusion, à propos de ce qui peut être erroné.
-modifier
Le code ci-dessous fait le travail à la fin. Je n'ai aucune idée de ce qui était erroné, depuis sa aussi travailler avec des "/" maintenant. Peut-être quelques petites erreur ailleurs. Néanmoins merci beaucoup pour votre temps 🙂 Bravo!
<c:set var="min" value="${fn:substringBefore((seconds div 60), '.')}"/>
<fmt:formatNumber var="sec" pattern="##" value="${seconds mod 60)}"/>
OriginalL'auteur user1386375 | 2012-06-17
Vous devez vous connecter pour publier un commentaire.
Ce (ci-dessous) doit être le seul moyen sûr de le faire. pattern="##" n'est pas bien pris en charge, minIntegerDigits="2" est plus facile et plus propre.
fn:substringBefore
est le chemin à parcourir. Merci!OriginalL'auteur Serge Miche9
Utilisation intégrale de la division pour obtenir la valeur de
min
, au lieu de la virgule flottante division:Maintenant, vous obtenez min = 12, et vous n'avez pas à vous soucier de l'arrondi.
<c:set var="min" value="${29 div 10}" />
me donne 2.9OriginalL'auteur buc