使用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导出的作用域变量的变量名
scopevar变量的作用域

使用<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