Форматирование чисел
Для форматирования чисел используется встроенный метод
Представление()
, который принимает как аргумент указанный
формат и возвращает строку с числом в этом формате.
Пример
123.456
вызывается метод
Представление()
. Он представляет это число в формате
'Результат: '6.2
, который передается этому методу как аргумент.
Результат форматирования помещается в переменную
б
:пер а: Число = 123.456
пер б = а.Представление("'Результат: '6.2")
Значение переменной
б
:Результат: 123,46
При
указании формата используется специальный синтаксис. Так, в примере выше форматная
строка 'Результат: '6.2
состоит из следующих частей:
'Результат: '
— префикс, 6
— ширина,
2
— точность. Подробнее о синтаксисе форматных строк смотрите
ниже.Синтаксис
В общем случае синтаксис форматной строки выглядит следующим образом: "['префикс'][флаги][ширина][.точность][специальные флаги]['суффикс']".
Вся форматная строка выделяется двойными кавычками. Префикс и суффикс указываются в отдельных одинарных кавычках (для экранирования). Являются необязательной частью форматной строки (могут не указываться). Необходимо, чтобы составляющие форматирующей части (флаги, ширина, точность, специальные флаги) следовали строго друг за другом в соответствии с синтаксисом.
- Префикс
-
Текстовая часть форматной строки, которая добавляется перед отформатированным числом. Пример:
Для числа
123.123
применим форматную строку'знач='7.2
. Получим:знач= 123.12
.При использовании символа
'
(одинарная кавычка) в префиксе его необходимо экранировать:''
(две идущие подряд одинарные кавычки). Пример:Для числа
123.123
применим форматную строку'знач''='7.2
. Получим:знач'= 123.12
. - Флаги
- Используются непосредственно для форматирования выводимого числа. В отличие
от специальных флагов определяются одним символом. При указании нескольких
флагов указываются без разделительных знаков, могут указываться в
произвольном порядке. При заполнении "свободного места", то есть разницы
между исходными и указанными шириной/точностью, заполнитель по умолчанию —
пробелы слева. Список флагов:
- 0
- Свободное место заполняется нулями слева. Несовместим с флагом
-
. Пример: - -
- Свободное место заполняется пробелами справа. Несовместим с
флагом
0
. Пример: - +
- Положительные числа выводятся со знаком
+
. Пример: - _
- Группировка целой части по 3 цифры, начиная с младшего разряда.
По умолчанию разделителем групп является символ неразрывного
пробела
- (
- Отрицательные числовые значения заключаются в скобки и берутся
по модулю. Пишутся без знака
-
. Пример:
- Ширина
-
Определяет общую ширину числа после форматирования (без префикса и суффикса). Если ширина меньше полученного числа (с соблюдением всех флагов, включая специальные), то она динамически расширяется до ширины числа. Если ширина больше результата, то свободное место заполняется в соответствии с указанным флагом. Если ширина не указана, то она будет минимально возможной для вывода отформатированного числа. Примеры:
Для числа
123.123
укажем ширину10
. Получим:123.123
.Для числа
123.123
укажем ширину1
. Получим:123.123
. - Точность
-
Определяет точность дробной части. Если указанная точность меньше, чем в исходном числе, то значение после десятичного разделителя округляется (по умолчанию: округление к ближайшему целому). Округление кастомизируется с помощью специального флага (
ОК
). Если указанная точность больше числа, то дробная часть дополняется нулями с конца. Если точность не указывается, то она соответствует точности исходного числа. Например:Для числа
123.456
укажем точность.2
. Получим:123,46
. - Специальные флаги
- Синтаксис: специальный флаг=значение, где значение это разделитель
или режим округления. Используются непосредственно для форматирования
выводимого числа. В отличие от обычных флагов определяются не одним
символом, а выражением. При указании нескольких флагов разделяются точкой с
запятой (
;
), могут указываться в произвольном порядке. От предыдущей части форматной строки (если есть) также отделяются точкой с запятой. Пример:'значение='РД=.'$'
. Для удобства чтения допускается использование пробела (пробелов) для отделения специального флага от знака присваивания, но не допускается использование пробела после знака присваивания или после знака разделителя, так как в этом случае пробел будет восприниматься встроенным языком как собственно разделитель или часть разделителя. Пример:'тест'(+_15.2; РГ =,; РД =.; ОК =ПВВ;'тест'
. Список специальных флагов: - Суффикс
-
Суффикс — это текстовая часть форматной строки (набор символов), которая добавляется после отформатированного числа. Например:
Для числа
123.123
применим форматную строку"-6.2' руб.'"
. Получим:123,12 руб.
При использовании символа
'
(одинарная кавычка) в суффиксе его необходимо экранировать:''
(две идущие подряд одинарные кавычки). Например:Для числа
123.123
применим форматную строку"-6.2' руб.'''"
. Получим:123,12 руб.'
Именованные стандартные форматы
Для упрощения работы с форматными строками можно использовать именованные стандартные форматы, при которых используется следующий синтаксис:
"['префикс']именованный_формат['суффикс']"
- Деньги
- Денежный/финансовый формат. Соответствует форматной строке
_.2
. Пример: - Основание
-
Представляет число в другой системе счисления по указанному основанию. Доступно только для целых чисел. Если исходное число не является целым, или его вещественная часть не эквивалента 0, выбрасывается соответствующая ошибка
IllegalArgumentBslException
. Доступны системы счисления от 2 до 36. Целая часть не разбивается на группы. Ширина строки — минимально возможная для вывода числа в выбранной системе счисления. Для оснований от 2 до 9 возможны оба варианта синтаксиса:ОснованиеX
илиОснование0X
. Пример:Основание2
для числа123
даст результат1111011
. - Процент
- Процентный формат. Соответствует форматной строке
_.2'%'
. Пример: