Per JSTL aus 0,45 --> 45 machen

Status
Nicht offen für weitere Antworten.

TSH

Bekanntes Mitglied
Hört sich einfach an, aber ich krieg's nicht hin. Ich habe eine Variable myValue, die irgendwo zwischen 0 und 1 liegt. Ich bräuchte den Wert nun als Ganzzahl zwischen 0 und 100, weil ich damit eine CSS width steuern möchte.

Ich hab Dinge probiert wie das hier:
Code:
<%-- Zuerst mal auf 2 Nachkommastellen runden --%>
<c:set var="WIDTH"><fmt:formatNumber value="${myvalue}" maxFractionDigits="2"/></c:set>

<%--Dann multiplizieren --%>
<div class="stars" style="width: <c:out value="${WIDTH * 100}"/>px;">TEXT</div>

Leider krieg ich dann solche Dinge um die Ohren gehauen:

Code:
java.lang.NumberFormatException: For input string: "0,72"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
	at java.lang.Long.parseLong(Long.java:412)
	at java.lang.Long.<init>(Long.java:671)
	at org.apache.el.lang.ELArithmetic$LongDelegate.coerce(ELArithmetic.java:188)
	at org.apache.el.lang.ELArithmetic.coerce(ELArithmetic.java:356)
	at org.apache.el.lang.ELArithmetic.multiply(ELArithmetic.java:319)
	at org.apache.el.parser.AstMult.getValue(AstMult.java:24)
Hat jemand einen Tipp für mich?
 
Hi

Das Problem scheint deine myvalue variabel zu sein.

Dein Stacktrace sagt:
Code:
java.lang.NumberFormatException: For input string: "0,72"

Aber es müsste 0.72 sein, mit Punkt, nicht mit Komma.

Bsp:
Code:
<c:set var="myvalue" value="0.1235"></c:set>

Das runden kannst du dir auch einfacher machen, entweder so:
Code:
<div class="stars" style="width: <fmt:formatNumber value="${myvalue * 100}" maxFractionDigits="0"/>px;">TEXT</div>

oder so:
Code:
<div class="stars" style="width: <fmt:formatNumber value="${myvalue * 100}" pattern="###"/>px;">TEXT</div>
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben