Интерактивное графическое программное обеспечение PC-DMIS (Глава 26: Использование выражений и переменных), страница 17

Форматный определитель должен иметь ту же систему, что и форматный определитель в функции sprintf , использующееся для языка программирования  C++.

Форматный определитель состоит из факультативных или обязательных полей и обладает следующей системой:

%[flags] [width] [.precision] type

Каждое поле форматного определителя представляет собой либо один символ, или число, указывающее на конкретную опцию формата. Самый простой форматный определитель использует только знак процентов и символ типа (например,  %d). Если за знаком процентов следует символ, который не имеет значения как форматное поле, символ копируется в STDOUT. Например, чтобы напечатать символ знака процента, используйте %%.

Факультативные флажковые, уточняющие поля, которые появляются перед символом типа, управляют остальными параметрами форматирования. Они описаны ниже:

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

Вот возможные флажки:

Значение: Выравнивание по левой стороне в пределах данного поля. Поумолчанию: Выравнивание по правой стороне.

+ Значение: Ставит знак (+ или –) перед выходным значением,  если к этому значению применимы знаки.

      По умолчанию: Знак стоит только перед отрицательными значениями (–).

0 Значение: Если перед шириной стоит 0, нули добавляются до тех пор, пока ни будет достигнута минимальная ширина. Если высвечиваются 0 и – , ноль не принимается в расчет. Если 0 определяется в формате целых чисел (i, u, x, X, o, d), 0 не принимается в расчет. Поумолчанию: Нет удлинения.

пробел (' ') [JLH8]  Значение: Ставит пробел перед выходной величиной, если эта выходная величина положительна, и перед ней стоит знак; пробел игнорируется, если одновременно появляются флажки blank и +. По умолчанию: Пробел не появляется.

# Значение 1: При использовании типа o, x, или X, флажок # помещает 0, 0x, или 0X, соответственно, перед любым выходным значением отличным от ноля. Поумолчанию 1: Без пробела. Значение 2: При использовании типа e, E, или f, флажок # делает обязательным использование запятой, использующейся в десятичных дробях, во всех случаях. По умолчанию 2: Запятая появляется лишь тогда, когда за ней следуют цифры. Значение 3: При использовании формата g или G, флажок # делает обязательным использование запятой, использующейся в десятичных дробях, во всех случаях и препятствует  усечению замыкающих нолей. По умолчанию 3: Запятая появляется лишь тогда, когда за ней следуют цифры. Замыкающие ноли усекаются. Примечание: Игнорируется при использовании d, i, или u.

width (ширина) Это второе факультативное поле или аргумент контролирует минимальное количество напечатанных знаков. Это неотрицательное десятичное целое число.

·  Если количество знаков в выходном значении меньше указанной ширины, справа или слева добавляются пробелы[JLH9]  — в зависимости от того, использован ли флажок – (для выравнивания по левой стороне) — до тех пор, пока не будет достигнута минимальная ширина.

·  Если перед шириной стоит 0, нули добавляются до тех пор, пока ни будет достигнута минимальная ширина (не целесообразно при выравнивании по левой стороне).

Указание ширины никогда не приводит к усечению величины. Если количество знаков в выходном значении больше указанной ширины, или ширина не задавалась, все знаки значения все же выводятся.

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