如何控制显示JSP中的数字位数?

时间:2010-10-11 08:10:53

标签: java jsp

我想问一个关于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类变量?谢谢。

3 个答案:

答案 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标记可以实现此目的,这是解决问题的更好方法。