<fmt:formatNumber>标签

JSTL <fmt:formatNumber> 标签用于格式化数字、百分比和货币。

语法

JSP <fmt:formatNumber> 标签的语法如下:
<fmt:formatNumber
  value="numberValue"
  [type="number|percent|currency"]
  [pattern="pattern"]
  [currencyCode="currencyCode"]
  [currencySymbol="currencySymbol"]
  [groupingUsed="true|false"]
  [maxIntegerDigits="maxIntegerDigits"]
  [minIntegerDigits="minIntegerDigits"]
  [maxFractionDigits="maxFractionDigits"]
  [minFractionDigits="minFractionDigits"]
  [var="varname"]
  [scope="page|request|session|application"] />

其中,[ ] 中包含的内容为可选项,对上述参数说明如下表所示:
参数 说明
value 要格式化的数字
type 设置数字的单位,即 number(数字)、currency(货币)、percent(百分数)
pattern 设定显示的格式
currencyCode 设置货币码
currencySymbol 设置货币符号
groupingUsed 设置是否对数字分组,默认为 true。
maxIntegerDigits 设置最多的整数位,若设定的数值少于数字的实际位数时,数字的左边位数会截去相应的位数,例如 123456,maxIntegerDigits 设定为 4,则结果为 3456。
minIntegerDigits 设置最少的整数位,若设定的数值多于数字的实际位数时,会在数字的左边补 0,例如 123,minIntegerDigits 设定为 4,则结果为 123.5。
maxFractionDigits 设置最多小数位数,若设定的数值小于数字的实际小数位数,则会从右边删掉多余位数,例如 123.56,minIntegerDigits 设定为 1,则结果为 123.5。
minFractionDigits 设置最少小数位数,若设定的数值大于数字的实际小数位数,则会从右边补 0。例如 123.56,minFractionDigits 设定为 4,则结果为 123.5600。
var 代表格式化后的数字,若设定了该参数,需要 <c:out> 标签输出。
scope 设定参数 var 的有效范围,默认为 page。

pattern 属性包含的字符说明如下表所示:
符号 描述
0 代表一位数字
E 使用指数格式
# 代表一位数字,若没有则显示 0
. 小数点
, 数字分组分隔符
; 分隔格式
- 使用默认复数前缀
% 百分数
? 千分数
¤ 货币符号,使用实际的货币符号代替
X 指定可以作为前缀和后缀的字符
` 在前缀或后缀中引用特殊字符

示例

<fmt:formatNumber> 标签的简单实例如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html>
<html>
<head>
<title>编程帮(www.biancheng.net)</title>
</head>
<body>
    <c:set var="Amount" value="9850.14115" />
    <fmt:formatNumber value="${Amount}" type="currency" />
    <br>
    <br>
    <fmt:formatNumber type="number" groupingUsed="true" value="${Amount}" />
    <br>
    <br>
    <fmt:formatNumber type="number" maxIntegerDigits="3" value="${Amount}" />
    <br>
    <br>
    <fmt:formatNumber type="number" maxFractionDigits="6" value="${Amount}" />
    <br>
    <br>
    <fmt:formatNumber type="percent" maxIntegerDigits="4" value="${Amount}" />
    <br>
    <br>
    <fmt:formatNumber type="number" pattern="###.###$" value="${Amount}" />
</body>
</html>

页面输出内容如下:

¥9,850.14

9,850.141

850.141

9,850.14115

5,014%

9850.141$