Dddd - нуль и более (р) разрядов мантиссы после точки;
Где т - один разряд значения мантиссы до точки;
Позиции отводятся для знака числа и точки.
Р - количество дробных разрядов;
Форматный вывод арифметических данных
Вторая строка
Обычные символы могут быть в строкеformatвперемежку с форматами аргументов, например, для идентификации выводимых значений:
printf ( " а = %d b[%d] = %f st = %s\n", a, i, b[ i ], st ) ;
Этот оператор может вывести:
а = 123 b[2] = 1.234567 st = ВСЕ
Для вывода целых чисел можно использовать форматы вида:
"%d”, “%wd”, “%w.pd”, “%.pd”.
При выводе целых чисел форматами типовd, i, u, о, х, Xзначение поляропределяет минимальное количество цифр, которые будут выведены. Если количество выводимых разрядов числа меньше заданногор, выводимое значение дополняется слева нулями, например, для формата "%.5d” может быть выведено:00123.
Ниже приведен пример программы для вывода значений ряда инициализированных переменных различными форматами с помощьюfprintfи результаты ее выполнения.
В примере в строке для вывода заголовка таблицы каждый символ % удвоен для вывода одного символа %.
Для вывода числа типаfloatв форме с фиксированной точкой можно использовать форматы вида: "%f, "%wf”, "%w.pf” или "%.pf”.
Для вывода числа в форме с плавающей точкой (в экспоненциальной форме, в виде мантиссы и порядка) можно использовать форматы вида: "%е", "%wе", "%w.ре" или "%.ре".
Для форматов вида "%f, "%wf", "%е" и "%we” по умолчанию р = 6.
При выводе значений с помощью форматов типа "%f” выводимое значение со знаком имеет форму: [-]ссс.dddd где:
ссс - один и более целых разрядов; количество целых разрядов зависит от величины выводимого значения; всегда выводятся все разряды целой части значения;
dddd - р дробных разрядов; для р = о дробные разряды и точка не выводятся.
Для вывода форматом типа "%f” минимальное значение поля w можно определить по формуле: w = р + k + 2, где:
к – количество целых разрядов;
При выводе значений с помощью формата типа “%е” выводимое значение со знаком имеет форму:
[ - ] m.dddd +/- 0DD
Для вывода форматом типа "%е" минимальное значение поля w можно определить по формуле: w = (р + 1) + 6. Кроме р + 1 позиции для размещения мантиссы требуются еще 6 позиций: 4 позиции для размещения порядка и по одной позиции для знака числа и точки.
Если поле w, определенное в формате %f, недостаточно для размещения целой части вещественного значения, система выделяет минимальное поле для ее размещения (поле для знака + не выделяется).
Если поле W, определенное в формате, больше минимального, то выводимое значение смещается в поле вправо или влево в зависимости от значенияflags, оставляя слева или справа пробелы.
При выводе вещественных значений форматами типа "%f” и "%е" точка выводится только тогда, когда число выводится с дробной частью. То есть для форматов вида "%w.0f, "%.0f, "%w.0e" и "%.0е” точка не выводится. Последняя десятичная цифра выводимого значения может быть результатом округления.
На рис. ниже приведен пример программы для вывода вещественного значения различными вариантами форматов типаfиеи результаты ее выполнения.
Из результатов, приведенных на рис., очевидно, что при выводе данных типаfloatформатом типа е:
1) для р = 0, то есть для форматов "%ю.0е" и "%.0е", выводится только 1 разряд округленной мантиссы до точки;
2) для р >= 1 выводится 1 разряд до точки и р разрядов после точки; если число содержит > р + 1 разряда числа, то выводится только часть числа, округленная до р + 1 разряда.
Пример форматного вывода значений в строку с помощьюsprintf:
sprintf (str, “ i = %d r = %f”, i, r);
Значения переменных i и r выводятся в строкуstrсо своими именами, например, в виде: i = 123, r = 4.567890.