Описанная ниже строка форматирования используется в функциях 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 |