我想问一个关于JSP和Java的问题。我正在编写JSP页面并且有一个bean类。在类中,我有一个getter函数,它将在jsp页面中返回一个double var。我使用以下代码显示数字。
<p> the value of AB is <%=obj.getValue() %> <p>
我希望显示屏符合以下内容
the value of AB is 0.45
但是,真正的显示如下
the value of AB is 0.4569877987
我只想显示最后两位数字。我该怎么做才能展示我想要的东西。我应该修改JSP页面还是Java类变量?谢谢。
答案 0 :(得分:12)
在JSP中,您可以使用JSTL标记<fmt:formatNumber>
执行此操作。您可以设置pettern
(#0.##
)或maxFractionDigits="2"
避免在JSP中使用Java代码 - 改为使用JSTL。 See this tutorial。请参阅this question
答案 1 :(得分:6)
您可以使用DecimalFormat
将值格式化为字符串,例如:
DecimalFormat df = new DecimalFormat("#0.00");
(该模式假设您总是希望小数部分有两位数,即使小数部分为零。否则,请使用#0.##
)
但一般情况下,建议不要直接调用DecimalFormat
构造函数。相反,建议的做法是调用NumberFormat
的工厂方法之一,然后根据需要自定义模式,例如:
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
Javadoc包括例子:
这应该在您的JSP页面中起作用:
<%@ page import="java.text.NumberFormat" %>
<%
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
%>
[...]
<p> the value of AB is <%= nf.format(obj.getValue()) %> <p>
另请参阅Bozho的答案,了解使用JSTL获得相同结果的方法。
答案 2 :(得分:4)
首先回答您的上一个问题 - 您应该修改JSP页面,因为您想要更改显示的数字,而不是实际的数字。< / p>
要执行此操作,您可以使用DecimalFormat对象将数字转换为所需格式的文本,而不是调用数字的默认toString方法。在这种情况下,您可能希望使用:
new DecimalFormat("#0.##")
作为格式字符串。
然而,as per Bozho's answer有一个JSTL标记可以实现此目的,这是解决问题的更好方法。