Как напечатать символ «%» с помощью «printf»? - PullRequest
8 голосов
/ 09 июля 2009

Простая проблема, которую я не могу понять ...

Как я могу напечатать символ '%' в строке printf? Приведенный ниже код печатает его, но также выдает ошибку «недопустимого преобразования»

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f\%\n", $total, $max15, ($max15/$total*100);

Должен вывести что-то вроде:

        0000 HRS    =>    3125.19    898.02    28.7%

Ответы [ 6 ]

22 голосов
/ 09 июля 2009

Вы бы использовали %%, а не \% (от man printf )

5 голосов
/ 09 июля 2009

%% для одного%

5 голосов
/ 09 июля 2009

Вместо \% используйте %%:)

3 голосов
/ 09 июля 2009

Оглядываясь назад, была грубая альтернатива, которая сделала бы то же самое.

Распечатать символ '%' в виде строки:

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%s\n", $total, $max15, ($max15/$total*100), "%";
2 голосов
/ 09 июля 2009

Используйте %% для печати одного%

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%%\n", $total, $max15, ($max15/$total*100);
1 голос
/ 10 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...