# EL Ausgabe Dezimalzahl



## braca (12. Sep 2008)

Hallo,

in meiner JSP-Webapplikation mache ich eine Sql-Abfrage, deren Ergebnis ich mit cut ausgeben will. Code sieht ungefähr so aus:
(JBoss 4.2.3, Oracle 10g, Web-app 2.5)

<sql:query var="queryResults">
SELECT kat1, kat2, SUM(bet)
FROM tab1
WHERE
dat BETWEEN '01.01.2007' AND '31.12.2007'
GROUP BY kat1,kat2
ORDER BY kat1,kat2
</sql:query>

<table>
<c:forEach var="row" items="${queryResults.rows}">
<tr>
<td><cut value="${row.kat1}" /></td>
<td><cut value="${row.kat2}" /></td>
<td><cut value="${row[2]}" /></td>
</tr>
</c:forEach>
</table>

Allerdings bekomme ich dabei eine Exception:

org.apache.jasper.JasperException: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

Das Ergebnis von SUM(bet) ist jeweils eine Dezimalzahl wie 1000,23.

Kann ich cut oder irgendwie anders beibringen, das es auch einen long akzeptiert? Oder wie macht man sowas normalerweise, ist cut für eine Dezimalzahl nicht gedacht?

Danke für eine Antwort
braca


----------



## HLX (13. Sep 2008)

Ein long ist kein Dezimalwert. Long hat keine Nachkommastellen. Dezimalwerte werden über float, double oder BigDecimal abgebildet.

Versuch mal folgendes:

```
SELECT kat1, kat2, SUM(bet) AS summe
FROM tab1
...
```
und

```
<td><c:out value="${row.kat1}" /></td>
<td><c:out value="${row.kat2}" /></td>
<td><c:out value="${row.summe}" /></td>
```


----------



## braca (13. Sep 2008)

Hallo,

danke für den Tipp: Der Sql-Alias-Name für die Spalten mit den Aggregatsfunktionen war des Rätsels Lösung.

Gruß braca


----------



## Gelöschtes Mitglied 5909 (22. Nov 2008)

Habe ein ähnliches Problem, dass sich aber nicht über die DB abfrage lösen lässt:


```
<c:forEach var="article" items="<%= articles %>" >
                    <tr>
                         
                        <td width="80"><c:out value='${article.price}' /> €</td>
                    </tr>
                </c:forEach>
```

am liebsten würde ich dafür einen currency-numberformatter nehmen, aber article wird innerhalb von scriptlets etc nicht erkannt und ist nur in der EL verfügbar. Muss ich mir dafür n eigenen taglig schreiben oder gibts ne andere und einfachere Lösung?


----------

