[英]JSTL: Absolute value of a BigDecimal (Proper way…)
請原諒我今晚參加腦部放屁活動,但是出於某種原因……這是我現在可以拿出帶有JSTL的BigDecimal
的ABS的最佳解決方案……ABS之外也沒有數學技巧。 我必須保持精確。
我知道有更好的方法來處理它...你的建議是什么? 任何谷歌搜索都在獲取有關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>
在服務器端使用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>
假設您正在使用某種MVC框架,或者至少有一個servlet將數據饋送到您的JSP,我建議在控制器/ servlet中將BigDecimals列表構建為絕對值-使用BigDecimal.abs()-所以你不必用這種東西搞砸JSP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.