Язык программирования Perl | страница 62
Float | |||
%g | %G | Число с плавающей точкой в формате %e или %f |
Между знаком процента и символом в указании преобразования можно использовать дополнительные параметры преобразования, основные из которых приведены в таблице 7.3.
Параметр | Выполняемое форматирование | Пример параметров sprintf() | Результат форматирования |
---|---|---|---|
число | Минимальная ширина поля вывода для результата преобразования; если она не задана или меньше ширины значения, то устанавливается равной ширине выводимого значения | '<%5s>', 25 | < 25> |
.число | Количество цифр после десятичной точки в дробном числе | '<%.5f>', 0.25 | <0.25000> |
Максимальная ширина поля вывода, до которой усекается длинная строка | '<%.5s>', '5' x 10 | <55555> | |
пробел | Вывод пробела перед положительным числом | '<% d>', 25 | '< 25>' |
+ | Вывод плюса перед положительным числом | '<%+d>', 25 | '<+25>' |
0 | Вывод нулей, а не пробелов при выравнивании по правому краю поля | '<%05s>', 25 | '<00025>' |
- | Выравнивание значения по левому краю поля | <%-5s>, 25 | '<25 >' |
# | Вывод перед восьмеричным числом 0, перед шестнадцатеричным числом 0x, перед двоичным числом 0b | '<%#x>',25 | '<0x19>' |
При выполнении sprintf() к очередному значению из списка аргументов применяется преобразование, результат которого вставляется в форматирующую строку на место указания преобразования. Например, если шаблон форматирования и аргументы функции sprintf() заданы так:
>
$format = "'%12s' агента <%03d> = '%+-10.2f'";
@list = ('Температура', 7, 36.6);
$formatted_string = sprintf($format, @list);
то после выполнения приведенного предложения в переменной $formatted_string будет содержаться такая отформатированная строка:
>
' Температура' агента <007> = '+36.60 '
Преобразования в формате этого примера обозначают следующее:
[x]. %12s - преобразовать аргумент в строку (string) и поместить в поле шириной в 12 символов с выравниванием вправо (т. к. ширина поля положительная);
[x]. %03d - преобразовать аргумент в десятичное целое (decimal) и поместить в поле шириной в 3 цифры с ведущими нулями (т. к. ширина поля задана с ведущим нулем) и выравниванием вправо (поскольку ширина положительная);
[x]. %+-10.2f - преобразовать аргумент в дробное число (float) с явным знаком (т.к. указан +) и поместить в поле шириной в 10 цифр, из которых 2 отводятся на дробную часть, с выравниванием влево (поскольку ширина поля отрицательная).
Функция