.<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,则会作四舍五入处理。
如数字"99.2",根据上述4个属性设置格式化之后的结果见表9-18所示。
表9-18 数字位数控制情况示例
minInteger Digits | maxInteger Digits | minFraction Digits | maxFraction Digits | 结 果 |
|
|