[英]How to convert String to double in JSP
我在JPS中的表中提取了一些结果,如下所示:
<tr>
<td>${item[0]}</td>
<td>${item[5]}</td>
<td>${item[1]}</td>
<td>${item[2]}</td>
<td>${item[5]}</td>
<td>${item[6]}</td>
</tr>
现在我想再添加一列,其中${item[2]}
除以${item[1]}
。 但这些是字符串如何将结果转换为double?
编辑:
到目前为止,在两个答案中我得到编译错误,导致:
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 30 in the jsp file: /WEB-INF/views/home.jsp
Syntax error, insert ")" to complete MethodInvocation
27: <td>${item[5]}</td>
28: <td>${item[1]}</td>
29: <td>${item[2]}</td>
30: <td><%= Double.parseDouble(${item[2]})/Double.parseDouble(${item[1]}) %> </td>
31: <td>${item[5]}</td>
32: <td>${item[6]}</td>
33: </tr>
更多代码:
<table width="100%">
<c:forEach var="item" items="${myList}">
<tr>
<td>${item[0]}</td>
<td>${item[5]}</td>
<td>${item[1]}</td>
<td>${item[2]}</td>
<td><%= Double.valueOf(item[2]) / Double.valueOf(item[1]) %></td>
<td>${item[5]}</td>
<td>${item[6]}</td>
</tr>
</c:forEach>
</table>
不要担心类型转换如果表达式${item[2]}
或${item[1]}
包含数值(数字)。 简单地用,
${item[2]/item[1]}
要么
<c:catch>
${items[0]/items[1]}
</c:catch>
每个表达式都在期望类型的上下文中进行评估。 表达式评估的结果可能与预期类型不完全匹配,然后转换将按照强制规则进行。
编辑:
为了更好的设计,尝试更改数据源但不添加scriptlet。 您可以使用实体(bean)列表。
${item.produtid}
${item.qty*item.rate}
<td><%= Double.valueOf(item[2]) / Double.valueOf(item[1]) %></td>
我在JSP的顶部设置了<%%>或控制器(servlet)本身的值:
String[] item = new String[1]; /* Assume a standard array */
String sOne = null, sTwo = null;
double dOne = 0.0d, dTwo = 0.0d, dPercent;
try {
sOne = item[1];
sTwo = item[2];
dOne = Double.parseDouble(item[1]);
dTwo = Double.parseDouble(item[2]);
/* Making an assumption on the *100 here.... */
dPercent = (dTwo/dOne)*100;
} catch(NumberFormatException nfe) {
/* Handle the NFE here...*/
} catch (NullPointerException npe) {
/* Handle the NPE here...*/
} catch (Exception e) {
/* Handle any other exception here...*/
}
预处理JSP顶部或控制器中的数据可使JSP更清晰:
<tr>
<td><%=item[0]%></td>
<td><%=item[5]%></td>
<td><%=item[1]%></td>
<td><%=item[2]%></td>
<td><%=item[5]%></td>
<td><%=item[6]%></td>
<td><%=dPercent%></td>
</tr>
请注意,Double.parseDouble()和Double.valueOf()之间的区别是返回类型。 .valueOf()返回一个Double对象,而.parseDouble()返回一个double类型。
有些java程序员可以互换使用'double'和Double,但是我来自'避免使用对象,使用原始类型!'的阵营。 Double不仅使用了比double更多的内存,而且不知道两者之间的差异会导致一些(主要)混淆。 有关int vs Integer示例,请参阅此链接: http : //illegalargumentexception.blogspot.com/2008/08/java-int-versus-integer.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.