使用fmt:formatNumber格式化数字
时间:2018-11-15 12:58:02 来源:igfitidea点击:
JSTL为您提供了fmt:formatNumber来对数字以不同的形式进行格式化。
fmt:formatNumber的基本用法如下:
<fmt:formatNumber value="value" />
value属性接受任何数字。fmt:formatNumber会根据客户端web浏览器设置的语言环境locale或者服务器端web应用程序设置的语言环境locale来格式化数字。
例如:
<%@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>的属性示例
<%@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>
输出:
37.79的百分比: 3,779% 0.336的百分比形式: 34%
自定义数字显示格式
例如使用科学计数法的方式打印一个大数字:
<c:set var="val" value="314159265358" />
<fmt:formatNumber value="${val}"
pattern="###.###E0" />
将显示为314.159E9。
显示货币符号
设置locale,并把type属性设置为`` 可以显示当地的货币符号:
<%@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>
输出:
美国货币 .90 德国货币 19,90 € 中国货币 ¥19.90
