<fmt:formatNumber> Тег

JSP 标准标签库Стандартная библиотека тегов JSP

Тег <fmt:formatNumber> используется для форматирования чисел, процентов и валюты.

Синтаксис

<fmt:formatNumber
  value="<string>"
  type="<string>"
  pattern="<string>"
  currencyCode="<string>"
  currencySymbol="<string>"
  groupingUsed="<string>"
  maxIntegerDigits="<string>"
  minIntegerDigits="<string>"
  maxFractionDigits="<string>"
  minFractionDigits="<string>"
  var="<string>"
  scope="<string>"/>

Атрибуты

Тег <fmt:formatNumber> имеет следующие атрибуты:

Attribute Описание Обязательный Значение по умолчанию
value Число для отображения Да Отсутствует
type Тип NUMBER, CURRENCY или PERCENT нет Number
pattern Укажите пользовательский шаблон форматирования для вывода нет Отсутствует
currencyCode Код валюты (когда type="currency") нет Зависит от локали по умолчанию
currencySymbol Символ валюты (когда type="currency") нет Зависит от локали по умолчанию
groupingUsed Группировать ли числа (TRUE или FALSE) нет истина
maxIntegerDigits Максимальное количество цифр в целой части нет Отсутствует
minIntegerDigits Минимальное количество цифр в целой части нет Отсутствует
maxFractionDigits Максимальное количество цифр в дробной части нет Отсутствует
minFractionDigits Минимальное количество цифр в дробной части нет Отсутствует
var Переменная для хранения форматированного числа нет Вывод на страницу
scope Область действия атрибута var нет page

Если атрибут type равен percent или number, можно использовать несколько других атрибутов форматирования чисел. Атрибуты maxIntegerDigits и minIntegerDigits позволяют указать длину целой части. Если фактическое число превышает максимальное значение, заданное maxIntegerDigits, число будет усечено.

Есть несколько атрибутов, позволяющих указать количество цифр после десятичной точки. Атрибуты minFractionalDigits и maxFractionalDigits позволяют указать количество цифр после десятичной точки. Если фактическое число выходит за пределы указанного диапазона, число будет усечено.

Группировку цифр можно использовать для вставки запятой каждые три цифры. Атрибут groupingIsUsed используется для указания, применяется ли группировка цифр. При совместном использовании с атрибутом minIntegerDigits нужно быть очень внимательным, чтобы получить ожидаемый результат.

Вы можете использовать атрибут pattern. Этот атрибут позволяет включать указанные символы при форматировании чисел. В следующей таблице перечислены эти символы.

Символ Описание
0 Представляет цифру
E Использует экспоненциальный формат
# Представляет цифру; отображает 0, если цифры нет; ведущие и конечные нули не отображаются.
. Десятичная точка
, Разделитель группировки цифр
; Разделяет форматы
- Использует префикс отрицательного числа по умолчанию
% Процент
? Промилле
¤ Символ валюты; заменяется фактическим символом валюты
X Указывает символы, которые можно использовать в качестве префикса или суффикса
' Экранирует специальные символы в префиксе или суффиксе


Пример

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<html>
<head>
  <title>JSTL fmt:formatNumber 标签</title>
</head>
<body>
<h3>数字格式化:</h3>
<c:set var="balance" value="120000.2309" />
<p>格式化数字 (1): <fmt:formatNumber value="${balance}" 
            type="currency"/></p>
<p>格式化数字 (2): <fmt:formatNumber type="number" 
            maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (3): <fmt:formatNumber type="number" 
            maxFractionDigits="3" value="${balance}" /></p>
<p>格式化数字 (4): <fmt:formatNumber type="number" 
            groupingUsed="false" value="${balance}" /></p>
<p>格式化数字 (5): <fmt:formatNumber type="percent" 
            maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (6): <fmt:formatNumber type="percent" 
            minFractionDigits="10" value="${balance}" /></p>
<p>格式化数字 (7): <fmt:formatNumber type="percent" 
            maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (8): <fmt:formatNumber type="number" 
            pattern="###.###E0" value="${balance}" /></p>
<p>美元 :
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${balance}" type="currency"/></p>
</body>
</html>

Вывод следующий:

数字格式化:

格式化数字 (1): ¥120,000.23

格式化数字 (2): 000.231

格式化数字 (3): 120,000.231

格式化数字 (4): 120000.231

格式化数字 (5): 023%

格式化数字 (6): 12,000,023.0900000000%

格式化数字 (7): 023%

格式化数字 (8): 120E3

美元 : $120,000.23

JSP 标准标签库Стандартная библиотека тегов JSP

Другие расширения