Russian Belarusian English German Japanese Ukrainian
  • Главная
  • Строка форматирования функций типа Format

Описанная ниже строка форматирования используется в функциях Format, FormatBuf, FmtStr, StrFmt, StrLFmt и др.

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

Спецификации формата начинаются с символа % и имеют вид:
"%" [index":"]["-"] [width] ["." prec] type

Единственно обязательным элементом спецификации является type - символ, указывающий на то, как будет трактоваться аргумент. Остальные необязательные элементы задают параметры форматирования:

Значение Описание
[index ":"] Устанавливает текущий индекс массива аргументов в заданное значение index. Индексы начинаются с 0. Например, спецификатор %0: переводит индекс на начало массива и обеспечивает повторное форматирование первого аргумента.
["-"] Обеспечивает выравнивание результата влево с заполнением оставшихся правых позиций поля пробелами. В отсутствие спецификатора ["—"] выравнивание производится вправо.
[width] Устанавливает минимальную ширину поля в результирующей строке. Если результат преобразования короче ширины поля, происходит выравнивание вправо (или влево, если был записан спецификатор ["—"]) с заполнением лишних позиций пробелами.
["." prec] Спецификатор точности, определяющий число выводимых символов (в зависимости от принятого формата). Спецификатор записывается после символа точки (.), чтобы отделить его от предшествующего спецификатора width.

Значения спецификаторов index, width и prec могут задаваться в виде целых значений или в виде символа звездочки (*).В последнем случае предполагается, что значение спецификатора задается очередным аргументом из списка.

Ниже приведены возможные значения type.Универсальный формат - преобразование в научный формат или формат с фиксированной точкой, в зависимости от того, какой из них дает более компактный результат. Если используется спецификатор ["." prec], то он указывает количество выводимых значащих разрядов (по умолчанию - 15). Начальные нули не печатаются, десятичная точка печатается, если необходимо. Формат с фиксированной точкой используется, если в преобразуемом значении число цифр до десятичной точки меньше заданной точности и если значение не меньше 0.00001. В остальных случаях используется научный формат.

Символ Тип аргумента Формат вывода
d целый Десятичный формат — строка десятичных цифр. Если используется спецификатор ["." prec], то он указывает минимальное количество выводимых цифр. Если действительное количество цифр результата меньше указанного спецификатором точности, то происходит выравнивание вправо р заполнением лишних позиций нулями.
e действительный Научный формат — строка вида «—d.ddd...E+ddd». Перед десятичной точкой всегда помещается одна цифра и для отрицательных величин — знак минус. Если используется спецификатор ["." prec], то он указывает общее количество выводимых цифр, включая цифру перед десятичной точкой (по умолчанию 15 цифр). После символа порядка «Е» всегда указывается знак — плюс или минус.
f действительный Формат с фиксированной точкой — строка вида «—ddd.ddd...». Если используется спецификатор ["." prec], то он указывает количество выводимых цифр после десятичной точки (по умолчанию 2 цифры).
k действительный Универсальный формат — преобразование в научный формат или формат с фиксированной точкой, в зависимости от того, какой из них дает более компактный результат. Если используется спецификатор ["." prec], то он указывает количество выводимых значащих разрядов (по умолчанию — 15). Начальные нули не печатаются, десятичная точка печатается, если необходимо. Формат с фиксированной точкой используется, если в преобразуемом значении число цифр до десятичной точки меньше заданной точности и если значение не меньше 0.00001. В остальных случаях используется научный формат.
n действительный Числовой формат — то же, что формат с фиксированной точкой, но с добавлением разделителей тысяч: «— d,ddd,ddd.ddd...>>.
m действительный Монетарный формат — число преобразуется в строку, отображающую денежную сумму. Формат контролируется глобальными переменными CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator, CurrencyDecimals, задаваемыми для монетарного формата разделом CurrencyFormat элемента InternationalКонтрольной панели Windows. Если используется спецификатор ["." prec], то он заменяет собой значение глобальной переменной CurrencyDecimals.
Р указатель Указатель — значение преобразуется в строку вида <XXXX:YYYY», где ХХХХ и YYYY— сегмент и смещение, выраженные четырьмя шестнадцатеричными цифрами.
s символ, строка или тип PChar Строка символов. Если используется спецификатор ["." prec], то он задает максимальное число символов. Если строка длиннее указанного числа, она усекается.
x целый Шестнадцатеричный формат — строка шестнадцатеричных цифр. Если используется спецификатор ["." prec], то он указывает минимальное количество цифр результата. Если результат короче, лишние позиции слева заполняются нулями.

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

Для форматов действительных чисел реально используемые символы десятичной точки и разделителей тысяч определяются глобальными переменными DecimalSeparator и ThousandSeparator.

Примеры влияния формата:

Число %f %e %g
110000. 110000,00 1Д0000000000000Е+005 110000
1.1е+08 -110000000,00 -1Д0000000000000Е+008 -110000000
0.00011 0,00 1,10000000000000Е-004 0,00011
1.1е-07 0,00 1.10000000000000Е-007 1ДЕ-7
12. 12,00 1,20000000000000Е+001 12
0. 0,00 о,оооооооооооооое+ооо 0

Примеры влияния точности:

спецификация / число 1.1Е-4 12. 0.00
%.2f 0,00 12,00 0,000
%.3f 0,000 12,000 0,0000
%.4f 0,0001 12,0000 0.0E+000
%.2e 1ДЕ-007 1.2E+001 0.0E+000
%.Зe 1Д0Е-007 1.20E+001 0.00E+000
%.4e 1Д00Е-007 1.200E+001 0.000E+000
%.2g 1ДЕ-7 12 0
%.3g 1ДЕ-7 12 0
%.4g 1ДЕ-7 12 0
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Поиск по сайту