如何使用 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')
解决这个问题。
非常感谢您对此进行调查。
我正在做一个小项目,其中 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')
解决这个问题。
非常感谢您对此进行调查。