Frage

Ich mache eine Abteilung in einer JSP und ich möchte das Ergebnis abzurunden - wie soll ich tun dies

d.

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

... wie runde ich das Ergebnis?

Danke,

War es hilfreich?

Lösung

Als Alternative:

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

Auf diese Weise verlieren Sie Lokalisierung (Kommas und Punkte) nicht.

Andere Tipps

I verwendet:

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

, die eher abschneidet als Abrundung, aber das kann gut genug sein.

Es kann wie folgt aussieht:

<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>

Hinweis: Ich denke, Sie sollten mod sowieso oder % Funktionalität von jstl, ich verwende mod in Beispiel. Test, bitte „verfallen“ und „jetzt“ Variablen mit unterschiedlichen Werten, soll ok arbeiten.

Was ist mit diesem schmutzigen Hack:

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

Aber ich würde dies in einer Bohne tun und zeigen nur das Ergebnis hier. Daneben können Sie definieren Funktionen in Ihrer TLD oder, wenn dies nicht in Ihrer Umgebung unterstützt wird erhalten Funktionen in der Ausdruckssprache durch eine Karte der Implementierung und (ab) verwenden. Sie implementieren die get (Object) -Methode zu tun, was Sie wollen und es so nennen:

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

Hinweis, Helfer eine "getRound ()" Methode, die Ihre Karte Implementierung zurück.

Mit der aktuellen EL-Version Sie verwenden können,

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

oder

<c:set var="expiry"
value="${Math.floor( (expire.time - now.time) / (60 * 1000) )}"/>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top