Я делаю разделение в JSP, и я хотел бы округлить результат - как мне это сделать?
то есть.
<c:set
var="expiry"
value="${(expire.time - now.time) / (60 * 1000)}"/>
... как мне закончить результат?
Спасибо,
Я делаю разделение в JSP, и я хотел бы округлить результат - как мне это сделать?
то есть.
<c:set
var="expiry"
value="${(expire.time - now.time) / (60 * 1000)}"/>
... как мне закончить результат?
Спасибо,
В качестве альтернативы:
<fmt:formatNumber var="expiry"
value="${(expire.time - now.time) / (60 * 1000)}"
maxFractionDigits="0" />
Таким образом вы не теряете локализацию (запятые и точки).
Я использовал:
${fn:substringBefore(expiry, '.')}
который усекает, а не округляет, но это может быть достаточно хорошим.
Он может выглядеть так:
<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>
note: я думаю, что вы должны использовать mod в любом случае или % функциональность jstl, я использую mod в примере. Проверьте, пожалуйста, переменные "expire" и "now" с разными значениями, должны работать нормально.
Как насчет этого грязного взлома:
<c:set
var="expiry"
value="${(((expire.time - now.time) / (60 * 1000) * 100) - 0.5) / 100.0}"/>
Но я бы сделал это в bean и просто покажу результат здесь. Кроме того, вы можете определить функции в вашем tld или, если это не поддерживается в вашей среде, получите функции на языке выражений путем реализации карты и (ab) использовать его. Вы реализуете метод get (Object), чтобы делать то, что хотите, и называете это следующим образом:
<c:set
var="expiry"
value="${Helpers.round[(expire.time - now.time) / (60 * 1000)]"/>
Примечание. Помощники предоставляют метод getRound(), который возвращает реализацию вашей карты.
С текущей версией EL вы можете использовать
<c:set var="expiry"
value="${Math.round( (expire.time - now.time) / (60 * 1000) )}"/>
или же
<c:set var="expiry"
value="${Math.floor( (expire.time - now.time) / (60 * 1000) )}"/>