Шаблоны форматирования чисел
Шаблоны форматирования чисел осуществляют контроль за отображения числовых значений (т.е. за преобразованием чисел в строку). Шаблон форматирования чисел определяет правила для форматирования десятичных чисел. Он поддерживает различные виды чисел, включая целые числа (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