您的位置:首页 > 其它

formatNumber详解

2016-01-05 11:48 246 查看
.<fmt:formatNumber>
<fmt:formatNumber>标签用于对数字、货币、百分比数据作格式化处理。使用<fmt:formatNumber>标签的语法如下。
第1种:不带body
<c:param name=< SPAN><c:out value=< SPAN>
1.            <fmt:formatNumber value="数值" [type="
{number|currency|percent}"]  
2.                 [pattern="格式定制模式"] 

[currencyCode="货币代码"]  
3.                 [currencySymbol="货币符号"] 

[groupingUsed="{true|false}"]  
4.                 [maxIntegerDigits="最多的整数位数"] 

[minIntegerDigits="最少的整数位数"]  
5.                 [maxFractionDigits="最多的小数位数"]

[minFractionDigits="最少的小数位数"]  
6.                 [var="变量名"] [scope="{page|request
|session|application}"]/> 
第2种:带有body
1.            <fmt:formatNumber [type="{number|currency
|percent}"] [pattern="格式定制模式"]  
2.                 [currencyCode="货币代码"] [currencySymbol="货币符号"]
 
3.                 [groupingUsed="{true|false}"] 

[maxIntegerDigits="最多的整数位数"]  
4.                 [minIntegerDigits="最少的整数位数"] 

[maxFractionDigits="最多的小数位数"]  
5.                 [minFractionDigits="最少的小数位数"] [var="变量名"]
 
6.                 [scope="{page|request|session|application}"]>  
7.                 要被格式化处理的数字  
8.            </fmt:formatNumber> 
<fmt:formatNumber>标签的属性说明详见表9-16。
表9-16  <fmt:formatNumber>标签的属性

属 性
数据类型
是否必选项
默认值
属性值的说明
value
String或数字


要被格式化的数值
type
String

number
指定被格式化的数
值的数据类型,
只能是number、currency或
percent中的一种
pattern
String


定制的格式模式
currencyCode
String


ISO 4217标准中的货币代码,
仅当格式化货币数
据类型时有效
currencySymbol
String


货币符号,如¥;仅当格
式化货币数据类型时有效
groupingUsed
boolean

true
是否输出分隔符,
如:1,234,567
maxIntegerDigits
int


整数部分最多的整数位数
minIntegerDigits
int


整数部分最少的整数位数
maxFractionDigits
int


小数部分最多的小数位数
minIntegerDigits
int


小数部分最少的小数位数
var
String


存储格式化处理输出的
结果字符串的变量
scope
Strng

page
属性var中指定的变
量的有效范围
如果属性scope被指定了,则属性var也必须被指定。属性currencyCode中设置的值必须是ISO 4217标准中规定的有效代码。如果属性value中的值为null或empty,则不会作输出处理,即便是指定了var属性也会从scope属性指定的范围中把这个变量删除。如果格式化处理失败,则会将要格式化处理的数值转化为字符串输出。指定了属性var则不会作输出处理,只是把格式化的结果存入属性var指定的变量中。
如果处理的数据类型是percent,即百分比,则数值会被乘以100,再根据本地化设置来作输出处理,数值为".24"表示"24%",数值为"24"表示"2400%"。如下面的语句:
1.            <fmt:formatNumber type="percent" value="24"/> 
在美国区域设置下,输出为"2,400%",但在法国区域设置下,输出为"2400%"。
货币数据有两个重要的特性:
(1)有货币符号,如美元为"$",人民币为"¥",法郎为"F"。
(2)小数点后的位数有特定的标准,如人民币和美元是小数点后2位,但意大利里拉是不能带小数的。
如下面的语句:
1.            <fmt:formatNumber type="currency" value="78.74901"/> 
对于人民币输出为"¥78.75",对于意大利里拉输出为"L.79"。
一般情况下,使用系统默认的货币代码即可,如果需要设置特定的贷币代码,就要设置属性currencyCode的值,如:"USD"表示美圆。常用的货币代码见表9-17所示。
表9-17  常用的货币代码

货币代码
货币
CNY
人民币元
EUR
欧元
GBP
英镑
JPY
日圆
USD
美圆
需要更多的货币代码,可参见如下的网址:
1.            http://www.bsi-global.com/iso4217currency  属性groupingUsed指出格式化数据时,是否加入分隔符,默认情况下是加入的。如下的语句:
1.            <fmt:formatNumber value="500000.01" groupingUsed="true" /> 
在英国区域设置下,输出为"500,000.01"。但如下的语句:
1.            fmt:formatNumber value="500000.01" groupingUsed="true" /> 
在英国区域设置下,输出为"500000.01"。
maxIntegerDigits、minIntegerDigits、maxFractionDigits、minFractionDigits这4个属性用于设置数字位数。
如果整数部分位数少于minIntegerDigits,将在左边补0;如果多于maxIntegerDigits,将会截去前面多的位数。如果小数部分位数小于minFractionDigits,将在右边补0;如果多于maxFractionDigits,则会作四舍五入处理。
 
<fmt: formatNumber value =”12.3” pattern=”.000”/>将输出 12.300. 应用样式 ”.000”, 将使格式化后的小数部分有 3 位。不足 3 位将以 0 补齐。 <fmt:formatDate value=”<%=new java.util.Date() %>” type=”date” /> 格式化的结果是: 2007-5-27 .<fmt:formatDate value=”<%=new
java.util.Date() %>” type=”time” />格式化的结果是: 9:25:11<fmt:formatDate value=”<%=new java.util.Date() %>” type=”both” />格式化的结果是: 2007-5-27 9:25:11 补充知识点: 1. 替换 request.getParameter("test"):<c:if test="${param.test!=null}" ><c:out value="${param.test}" /></c:if>
2. <c:redirect url="a.jsp"> 3.<c:redirect url="/max.jsp" context="/ch16"><c:param name="name1" value="665"/><c:param name="name3" value=" 斯蒂芬 "/></c:redirect> 4.<c:forTokens items="zhangsan:lisi:as" delims=":" var="name">${name}</c:forTokens>

3、  小数点保留两位:  

  

3.1 用JSTL标签中的fmt标签  

在JSP开头导入以下标签:  

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>  

从后台传入的值是deltmain。 这里的pattern就相当于DecimalFormat。  

<fmt:formatNumber value="${deltmain}" pattern="##.##" minFractionDigits="2" ></fmt:formatNumber>  

  

3.2 用普通JS写:  

function to1bits(flt) {   

if(parseFloat(flt) == flt)   

return Math.round(flt * 10) / 10;   

// 到4位小数, return Math.round(flt * 10000) / 10000;   

else   

return 0;   

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: