Нижче наведений рядок форматування використовується у функціях 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,00000000000000Е+000 | 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 |