Robię podział w JSP i chciałbym zaokrąglić wynik - jak mam to zrobić?Jak zaokrąglić liczbę w JSTL?
tj
<c:set
var="expiry"
value="${(expire.time - now.time)/(60 * 1000)}"/>
... jak mam zaokrąglić wynik?
Dzięki,
Robię podział w JSP i chciałbym zaokrąglić wynik - jak mam to zrobić?Jak zaokrąglić liczbę w JSTL?
tj
<c:set
var="expiry"
value="${(expire.time - now.time)/(60 * 1000)}"/>
... jak mam zaokrąglić wynik?
Dzięki,
Jako alternatywę:
<fmt:formatNumber var="expiry"
value="${(expire.time - now.time)/(60 * 1000)}"
maxFractionDigits="0" />
ten sposób nie stracisz lokalizacyjne (przecinki i kropki).
Co o tym brudnym Hack:
<c:set
var="expiry"
value="${(((expire.time - now.time)/(60 * 1000) * 100) - 0.5)/100.0}"/>
Ale chciałbym to zrobić w fasoli i po prostu pokazać wynik tutaj. Poza tym możesz define functions in your tld lub, jeśli nie jest to obsługiwane w twoim środowisku, uzyskaj funkcje w języku wyrażeń poprzez zaimplementowanie mapy i (ab) jej użycie. Zaimplementować metodę get (Object), aby robić to, co chcesz i nazwać tak:
<c:set
var="expiry"
value="${Helpers.round[(expire.time - now.time)/(60 * 1000)]"/>
Uwaga, pomocnicy zapewnia „getRound()” metoda, która zwraca implementacji Map.
Może ona wygląda:
<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>
uwaga: myślę, że należy użyć mod lub w każdym razie % funkcjonalność JSTL używam mod w przykładzie. Testuj, proszę, "wygasaj" i "teraz" zmienne o różnych wartościach, powinny działać poprawnie.
użyłem:
${fn:substringBefore(expiry, '.')}
który obcina zamiast zaokrąglania, ale to może być wystarczająco dobre.
Po prostu to, czego potrzebowałem, obcięcie. Dzięki! – Jan
Należy zachować ostrożność, w niektórych językach separatorem dziesiętnym jest przecinek (np. Hiszpański) –
Zgodziłbym się z tą odpowiedzią. JSTL nie powinno zajmować się "poprawnym" wdrażaniem jakiejkolwiek logiki, takiej jak zaokrąglanie. To decyzja średniego szczebla. JSP i JSTL powinny być wyświetlane tylko. Znacznik formatu jest prawidłowy. – duffymo
Uważaj, zależy to od bieżących ustawień narodowych https://stackoverflow.com/a/16899830/1606662 – Chintsu