如何使用 JSTL 将十进制值四舍五入到两位,其中列表是作为数据库的输出创建的

How to round the decimal value to two places using JSTL where the List is created as output from database

我正在做一个小项目,其中 sql 输出(结果集)被转换成列表并传递给 JSP 以显示数据。

如何将特定列的内容四舍五入到小数点后两位。

这是我目前拥有的代码:

传递结果集以创建列表:

rs = stmt.executeQuery(sql);
List<String> output = setData(rs);

设置数据:

public List<String> setData(ResultSet rs) throws SQLException {

     ResultSetMetaData md = rs.getMetaData();
     int columns = md.getColumnCount();
     ArrayList list = new ArrayList();
     while (rs.next()){
         HashMap row = new HashMap(columns);
         for(int i=1; i<=columns; ++i) {           
             row.put(md.getColumnName(i),rs.getObject(i));
         }
         list.add(row);
     }
     return list;
 }

在JSP页面使用以上代码如下图:

<%
 String sql = "My SQL code goes here";
 ConnectionFactory cf = new ConnectionFactory();
 List<String> output = cf.getData(sql);
 pageContext.setAttribute("output",output);
%>
<tbody>
     <c:forEach items="${output}" var="ls">
         <tr>
             <td><c:out value="${ls.col1}"/></td>
             <td><c:out value="${ls.col2}"/></td>
             <td><c:out value="${ls.col3}"/></td>
             <td><c:out value="${ls.col4}"/></td>
             <td><c:out value="${ls.col5}"/></td>
         </tr>
     </c:forEach>
</tbody>

现在假设 "ls.col3" 有小数(不幸的是我不能在 SQL 限制),如何 restrict/round 小数到两位数?

非常感谢任何见解:)

此致,

你可以在 jsp header

中做类似的事情
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

这在您需要显示最多 2 位小数的值的行中

<fmt:formatNumber type="number" maxFractionDigits="2" minFractionDigits="2" value="${ls.col3}"/>

实际问题出在我的 SQL 代码中。我使用了似乎不起作用的圆形函数。我已将其替换为

to_char(calculations, 'FM999D00')

解决这个问题。

非常感谢您对此进行调查。