Поделиться через


Функция format-number

Преобразует численные значения в строки. Преобразование является результатом форматирования численного значения, заданного в первом аргументе (number), с помощью формата, заданного во втором аргументе (string), и применения правил, определенных в десятичном формате, именованном в третьем необязательном аргументе (string). Если третий аргумент (decimal format name) опущен, то используется десятичный формат по умолчанию. Эта функция и элемент <xsl:decimal-format> разработаны для совместного применения.

string format-number(number, string, string?)

Замечания

Первый аргумент указывает значение input value. Например, число 5351.

Второй аргумент указывает значение format pattern. Например, строка '###.###,00'.

Третий аргумент является необязательным аргументом decimal format name. Он позволяет использовать любой символ в формате строки шаблона. Символ связывается с ролью в элементе <xsl:decimal-format>. Частым значением аргумента decimal format name является european, которое используется для преобразования исходных ролей точки и запятой.

В шаблоне формата поддерживаются следующие символы: «.», «,», «#», «%», «0», а также символ промилле Юникода (#x2030). Символ «#» используется для описания целых чисел. Символы «.» и «,» используются для описания расположения и типа пунктуации. Символ «0» используется для расположения 0 до и после символа «.», если в противном случае позиция не покажет цифру, например 00.3 или 3.00. При усечении чисел справа от десятичного разделителя численное значение округляется. Численное значение слева от десятичного разделителя никогда не округляется.

Должны присутствовать как входное значение, так и строка шаблона формата, в противном случае выдается ошибка. Если входное значение не приводится к численному значению с помощью правил, указанных в функции number(), то функция format-number возвращает значение NaN. Если строка шаблона формата не является допустимой строкой шаблона, функция возвращает неизмененное входное значение.

Если присутствует аргумент decimal format name, он представляет имя десятичного формата, как указано в элементе <xsl:decimal-format>. Имя десятичного формата должно быть полным именем. Если имя десятичного формата задано в функции, то в таблице стилей должен существовать элемент <xsl:decimal-format> с таким же именем.

Элемент <xsl:decimal-format> может переопределить шаблон форматирования чисел по умолчанию. Элемент <xsl:decimal-format> соблюдает шаблоны указателей форматирования класса java.text.DecimalFormat. Примеры использования функции format-number с элементом <xsl:decimal-format> см. в разделе Элемент <xsl:decimal-format>.

Примеры

Следующие строки XSLT возвращают значение «24.535,20»:

<xsl:decimal-format name="european" decimal-separator=',' grouping-separator='.' />
<xsl:value-of select="format-number(24535.2, '###.###,00', 'european')"/>

При вызове следующей функции возвращается значение «5,351»:

format-number(5351,"#,###")

При вызове следующей функции возвращается значение «5351.00»:

format-number(5351, "#.00")

При вызове следующей функции возвращается значение «53,5100»:

format-number(53.51, "#.0000")

При вызове следующей функции возвращается значение «0053.5100»:

format-number(53.51, "0000.0000")

При вызове следующей функции возвращается значение «0053.51»:

format-number(53.51, "0000.####")

При вызове следующей функции возвращается значение «53,6»:

format-number(53.56, "0.0")

Полный пример применения этой функции к XML-данным с помощью таблицы стилей XSLT см. в разделе Пример использования элемента <xsl:decimal-format>.

См. также

Справочник

Справочник по типам данных XML
Элемент <xsl:decimal-format>