JSP使用fmt:formatNumber格式化数字


JSTL为您提供了fmt:formatNumber来对数字以不同的形式进行格式化。

fmt:formatNumber的基本用法如下:

1
<fmt:formatNumber value="value" />

value属性接受任何数字。fmt:formatNumber会根据客户端web浏览器设置的语言环境locale或者服务器端web应用程序设置的语言环境locale来格式化数字。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@page contentType="text/html" 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" %>
 
<html>
<head>
<title>数字格式化</title>
</head>
<body>
<c:set var="val" value="10.53" />
<fmt:setLocale value="fr_FR"/>
<fmt:formatNumber value="${val}" />
 
<fmt:setLocale value="zh_CN"/>
<fmt:formatNumber value="${val}" />
</body>
</html>

在上面的示例中,首先定义一个变量并将其值设置为200.51。然后

我们使用操作<fmt:setLocale>覆盖了浏览器的语言环境locale。 所以虽然浏览器的环境是中文,但是在fr_FR中,显示的是法国格式200,51
我们将地区重新设置为zh_CN,它将显示为200.51。

<fmt:formatnumber>的属性列表

属性名 说明
value 要格式化的数值。
type 确定该值的格式:数字、货币或百分比。
pattern 为输出指定自定义格式模式。
currencyCode 仅适用于接受ISO 4217货币代码的货币格式。
currencySymbol 只适用于货币格式化,接受货币符号
groupingUsed 用于定义格式化数字的分组分隔符
maxIntegerDigits 指定输出中格式化数字的整数部分的最大位数。
minIntegerDigits 指定输出中格式化数字的整数部分的最小位数。
maxFractionDigits 指定输出中格式化数字的小数部分的最大位数
minFractionDigits 指定输出中格式化数字的小数部分的最小位数。
var 导出的作用域变量的变量名
scope var变量的作用域

使用<fmt:formatnumber>的属性示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@page contentType="text/html" 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" %>
 
<html>
<head>
<title>数字格式化</title>
</head>
<body>
<c:set var="val" value="37.79" />
<p>37.79的百分比:
<fmt:setLocale value="zh_CN"/>
<fmt:formatNumber value="${val}"
type="percent" />
</p>
<p>0.336的百分比形式:
<fmt:setLocale value="zh_CN"/>
<fmt:formatNumber value="0.336"
type="percent" />
</p>
</body>
</html>

输出:

1
2
3
37.79的百分比: 3,779%
0.336的百分比形式: 34%

自定义数字显示格式

例如使用科学计数法的方式打印一个大数字:

1
2
3
<c:set var="val" value="314159265358" />
<fmt:formatNumber value="${val}"
pattern="###.###E0" />

将显示为314.159E9

显示货币符号

设置locale,并把type属性设置为`` 可以显示当地的货币符号:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%@page contentType="text/html" 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" %>
 
<html>
<head>
<title>数字格式化</title>
</head>
<body>
<c:set var="val" value="19.90" />
<p> 美国货币
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${val}"
type="currency" />
</p>
<p> 德国货币
<fmt:setLocale value="de_DE"/>
<fmt:formatNumber value="${val}"
type="currency"/>
</p>
<p> 中国货币
<fmt:setLocale value="zh_CN"/>
<fmt:formatNumber value="${val}"
type="currency"/>
</p>
</body>
</html>

输出:

1
2
3
4
5
美国货币 .90
德国货币 19,90 €
中国货币 ¥19.90


原文链接:https://codingdict.com/