2011-12-16 1286 views
1

請原諒我今晚的大腦放屁,但由於某種原因......這是我現在可以拿出的最好的解決方案獲得ABS的BigDecimal現在有了JSTL ...... ABS之外也沒有數學技巧。我必須保持精確。JSTL:BigDecimal的絕對值(適當的方式...)

我知道有一個更好的方法來處理它...你的建議是什麼?任何谷歌搜索正在拉起幫助formatNumber和處理貨幣的三角洲/底片。

<c:forEach items="${arr}" var="cursor" varStatus="itemsRow"> 
    <c:choose> 
    <c:when test="${cursor.value < 0}"> 
     <td width="75px" align="right"> 
     <fmt_rt:formatNumber pattern="#,###,###,###.##" value="${cursor.value * -1}" minFractionDigits="2"/></td> 
    </c:when> 
    <c:otherwise> 
     <td width="75px" align="right"> 
     <fmt_rt:formatNumber pattern="#,###,###,###.##" value="${cursor.value}" minFractionDigits="2"/></td> 
    </c:otherwise> 
    </c:choose> 
</c:forEach> 
+0

您的樣品看起來像HTML一些PHP解析中@喬恩 – Jon 2011-12-16 04:45:02

+2

哪。部分看起來像PHP?看起來像JSP給我。 – 2011-12-16 05:00:16

回答

2

在服務器端使用BigDecimal.abs();不要在JSP中做這種工作。

如果你需要必須,把它包裝在一個基於JSP的自定義標籤中,或者創建一個JSTL函數包裝來處理abs。

此外,重構,類似這樣(沒有經過充分測試),如果你不能做的工作在一個適當的位置:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<c:forEach items="${arr}" var="cursor" varStatus="itemsRow"> 
    <c:set name="val" value="${cursor.value < 0 ? cursor.value * -1 : cursor.value}"/> 
    <td width="75px" align="right"> 
    <fmt_rt:formatNumber pattern="#,###,###,###.##" value="${val}" minFractionDigits="2"/> 
    </td> 
</c:forEach> 
1

假設你正在使用某種形式的MVC框架,或者至少有一個servlet供給的數據到你的JSP,我建議建立你的控制器/ servlet的BigDecimals的是絕對值的名單 - 使用BigDecimal.abs() - 這樣你就不必用這種東西去搞清楚JSP。