Шаблоны форматирования чисел

Шаблоны форматирования чисел осуществляют контроль за отображения числовых значений (т.е. за преобразованием чисел в строку). Шаблон форматирования чисел определяет правила для форматирования десятичных чисел. Он поддерживает различные виды чисел, включая целые числа (123), числа с фиксированной запятой (123.4), научную форму (1.23E4), проценты (12%) и валюту ($123).

Шаблоны

Шаблон содержит положительные и отрицательные подшаблоны, например, "#,##0.00;(#,##0.00)". У каждого подшаблона есть префикс, числовая часть и суффикс. Отрицательный подшаблон необязательный; если он отсутствует, тогда положительный подшаблон с префиксом в виде знака минус ('-' в большинстве  языковых стандартов) используется как отрицательный подшаблон. Т.е., "0.00" эквивалентно "0.00;-0.00". Если есть явно определенный отрицательный подшаблон, он служит только для определения отрицательного префикса и суффикса; количество цифр, минимальное количество цифр и другие характиристики - все аналогичны положительному шаблону. Это означает, что представление "#,##0.0#;(#)" абсолютно идентично "#,##0.0#;(#,##0.0#)".

Разделитель групп обычно используется для тысяч, но в некоторых странах он разделяет десятитысячные числа. Размер групп - это количество цифр между символами группировки, например, 3 для 100,000,000 или 4 для 1,0000,0000. Если Вы используете шаблон с множеством символов группировок, интервал между последним и концом целого числа - это, то что используется. Таким образом: "#,##,###,####" == "######,####" == "##,####,####".

Специальные символы шаблонов

Многие символы в шаблоне берутся точно как есть; они соотносятся во время синтаксического анализа и выводятся неизмененными во время форматирования. Специальные символы, с другой стороны, означают другие символы, строки или классы символов. Их следует брать в кавычки, если не указано иное, если они должны появиться в префиксе или суффиксе как литералы.

Символ

Расположение/Location

Значение

0

Число

Цифра

#

Число

Цифра, ноль отображает отсуствие.

.

Число

Десятичный разделитель или денежный десятичный разделитель

-

Число

Знак минус

,

Число

Разделитель групп

E

Число

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

;

Граница подшаблона

Разделяет положительный и отрицательный подшаблоны.

%

Префикс или суффикс

Умножить на 100 и показать процент.

\u2030

Префикс или суффикс

Умножить на 1000 и показать как значение промилле.

¤ (\u00A4)

Префикс или суффикс

Знак валюты, замененный символом валюты. Если двойной, заменяет международный символ валюты. Если представлен в шаблоне, денежный десятичный разделитель используется вместо десятичного разделителя.

'

Префикс или суффикс

Используется для заключения в кавычки специальных символов в префиксе и суффиксе, например, "'#'#" форматирует 123 в "#123". Чтобы создать одну кавычку, используйте две в ряду:  "# o''clock".

Научная форма

Числа в научной форме выражены как мантисса и степень, например, 1234 можно выразить как 1.234 x 10^3. Мантисса часто входит в диапазон 1.0 <= x < 10.0, хотя это и не требуется. Научная форма может быть передена в другой формат и подвергнута анализу научной формы только по шаблону; в настоящий момент нет генерирующего метода, который способен создать формат научной нотации. В шаблоне за символом экспоненты непосредственно следует один или более цифровых символов, и это является признаком научной формы. Пример: "0.###E0" форматирует число 1234 как "1.234E3".

  • Количество цифровых символов после символа экпонента дает минимальное количество разрядов экспоненты. Максимума нет. Отрицательные экспоненты форматируются при помощи знака минус, не префикса и не суффикса из шаблона. Это разрешает такой шаблон, как например, "0.###E0 m/s".
  • Минимальное и максимальное число целых чисел интерпретируются вместе:
  • Если максимальное число целых чисел больше их минимального числа и больше, чем 1, это заставляет экспоненту быть множеством максимального числа целых чисел, пр этом минимальное количество целых чисел интерпретируется как 1. Наиболее частое использование этого - генерирование инженерной формы, в которой экспоненты - это мультипликатор трех, например, "##0.#####E0". Используя этот шаблон, число 12345 форматируется в "12.345E3", а 123456 форматируется в "123.456E3".
  • В ином случае минимальное количество целых чисел получается путем корректировки экспоненты. Пример: 0.00123 форматируемое с "00.###E0," выдает "12.3E-4".
  • Количество значащих разрядов в мантиссе - это сумма минимального целого числа и максимальных цифр после запятой, на нее не влияют максимальные целые числа. Например, 12345, форматируемое с "##0.##E0", - это "12.3E3". Чтобы показать все цифры, установите значимые цифры в нуль. Количество значимых цифр не влияет на синтаксический анализ.  
  • Экспоненциальные шаблоны могут не содержать разделители группировок.

Грамматика синтаксиса шаблона

Шаблоны формата числа имеют следующий синтаксис:  

Pattern:

        PositivePattern

        PositivePattern ; NegativePattern

PositivePattern:

        Prefixopt Number Suffixopt

NegativePattern:

        Prefixopt Number Suffixopt

Prefix:

        any Unicode characters except \uFFFE, \uFFFF, and special characters

Suffix:

        any Unicode characters except \uFFFE, \uFFFF, and special characters

Number:

        Integer Exponentopt

        Integer . Fraction Exponentopt

Integer:

        MinimumInteger

        #

        # Integer

        # , Integer

MinimumInteger:

        0

        0 MinimumInteger

        0 , MinimumInteger

Fraction:

        MinimumFractionopt OptionalFractionopt

MinimumFraction:

        0 MinimumFractionopt

OptionalFraction:

        # OptionalFractionopt

Exponent:

        E MinimumExponent

MinimumExponent:

        0 MinimumExponentopt