9

简单的问题,我无法弄清楚...

如何在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%
4

6 回答 6

24

您将使用 %%,而不是 \%(来自 man printf

于 2009-07-09T08:52:56.587 回答
5

而不是 \% 使用 %% :)

于 2009-07-09T08:53:49.533 回答
5

%% 为单个 %

于 2009-07-09T08:56:05.910 回答
3

事后看来,有一个粗略的替代方案可以做同样的事情。

将 '%' 符号打印为字符串:

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%s\n", $total, $max15, ($max15/$total*100), "%";
于 2009-07-09T10:48:57.617 回答
2

使用 %% 打印单个 %

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%%\n", $total, $max15, ($max15/$total*100);
于 2009-07-09T08:54:12.560 回答
1

这有点棘手,因为printf模板的文档实际上在sprintf的文档中。你必须抓住段落中间的那条线才能知道在那里看。

于 2009-07-10T15:40:54.313 回答