public class DoubleTrans{
public static String doubleTrans(double d){
if(Math.round(d)-d==0){
return String.valueOf((long)d);
}
return String.valueOf(d);
}
public static void main(String args[]){
double a=3.0d,b=3.1d;
System.out.println(doubleTrans(a));
System.out.println(doubleTrans(b));
}
}
运行结果:3 3.1
或者使用new DecimalFormat("#.##").format(d);
在页面上显示double时,不显示.0得通过JSTL fmt标签了:
JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现这些功能需要I18N格式标签库(I18N-capable formation tags liberary)。引入该标签库的方法为:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
I18N格式标签库提供了11个标签,这些 标签从功能上可以划分为3类如下:
(1)数字日期格式化。formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。
(2)读取消息资源。bundle标签、message标签、setBundle标签。
(3)国际化。setlocale标签、requestEncoding标签。
接下将详细介绍这些标签的功能和使用方式。
9.3.1 数字日期格式化
数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。
1.<frm:formatNumber/>标签
该标签依据特定的区域将数字改变为不同的格式来显示。
【语法1】:
<frm:formatNumber value=”被格式化的数据”[type=”number|currency|percent”]
[pattern=”pattern”]
[currencyCode=”code”]
[currencySymbol=”symbol”]
[groupingUsed=”true|false”]
[maxIntergerDigits=”maxDigits”]
[minIntergerDigits=”minDigits”]
[maxFractionDigits=”maxDigits”]
[minFractionDigits=”minDigits”]
[var=”name”]
[scope=page|request|session|application]
/>
【语法2】:
<frm:formatNumber [type=”number|currency|percent”]
[pattern=”pattern”]
[currencyCode=”code”]
[currencySymbol=”symbol”]
[groupingUsed=”true|false”]
[maxIntergerDigits=”maxDigits”]
[minIntergerDigits=”minDigits”]
[maxFractionDigits=”maxDigits”]
[minFractionDigits=”minDigits”]
[var=”name”]
[scope=page|request|session|application]
>
<fmt:formatNumber>标签参数说明:
名称 |
说明 |
EL |
类型 |
必须 |
默认值 |
value |
要格式化的数据 |
是 |
String |
是 |
无 |
type |
指定类型(单位、货币、百分比等)见表 |
是 |
String |
否 |
number |
pattern |
格式化的数据样式 |
是 |
String |
否 |
无 |
currencyCode |
货币单位代码 |
是 |
String |
否 |
无 |
cuttencySymbol |
货币符号($、¥) |
是 |
String |
否 |
无 |
groupingUsed |
是否对整数部分进行分组如(9,999) |
是 |
boolean |
是 |
true |
maxIntergerDigits |
整数部分最对显示多少位数 |
是 |
int |
否 |
无 |
minIntergerDigits |
整数部分最少显示多少位 |
是 |
int |
否 |
无 |
maxFractionDigits |
小数部分最多显示多少位 |
是 |
int |
否 |
无 |
minFractionDigits |
小数部分最少显示多少位 |
是 |
int |
否 |
无 |
var |
存储格式化后的数据 |
否 |
String |
否 |
无 |
scope |
var的JSP范围 |
否 |
String |
否 |
page |
Type属性的类型应用:.
类型 |
说明 |
示例 |
number |
数字格式 |
0.8 |
currency |
当地货币 |
¥0.80 |
percent |
百分比格式 |
80% |
【示例代码】:实现了对数字的格式化、货币的格式、货币的格式化。使用<frm:formatNumber>的各种属性的设定。
<table border=1 cellpadding="0" cellspacing="0" align="center">
<tr align="center">
<td width="100">类型 </td>
<td width="100">使用数据</td>
<td width="100">结果</td>
<td width="300">说明</td>
</tr>
<tr>
<td>数字格式化</td><td>108.75</td>
<td><fmt:formatNumber type="number" pattern="###.#">108.75</fmt:formatNumber></td>
<td>使用pattern可以定义显示的样式。本例设定为###.#小数部分将使用四舍五入法。</td>
</tr>
<tr>
<td>数字格式化</td><td>9557</td>
<td><fmt:formatNumber type="number" pattern="#.####E0">9557</fmt:formatNumber></td>
<td>使用科学计数法。</td>
</tr>
<tr>
<td>数字格式化</td><td>9557</td>
<td><fmt:formatNumber type="number" >9557</fmt:formatNumber></td>
</td>
<td>使用默认分组。</td>
</tr>
<tr>
<td>数字格式化</td><td>9557</td>
<td><fmt:formatNumber type="number" groupingUsed="false" >9557</fmt:formatNumber></td>
<td>不使用分组。</td>
</tr>
<tr>
<td>数字格式化</td><td>9557</td>
<td><fmt:formatNumber type="number" maxIntegerDigits="3">9557</fmt:formatNumber></td>
<td>使用位数限定,根据指定的位数显示,其他数字忽略。例如:9不被显示。</td>
</tr>
<tr>
<td>百分比格式化</td><td>0.98</td>
<td><fmt:formatNumber type="percent">0.98</fmt:formatNumber></td>
<td>用百分比形式显示一个数据。</td>
</tr>
<tr>
<td>货币格式化</td><td>188.88</td>
<td><fmt:formatNumber type="currency" >188.8</fmt:formatNumber></td>
<td>将一个数据转化为货币形式输出。</td>
</tr>
<tr>
<td>存储数据</td><td>188.88</td>
<td><fmt:formatNumber type="currency" var="money"