2009-07-09 9 views
8

私が理解できない単純な問題'printf'で '%'文字を印刷するにはどうすればよいですか?

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% 

答えて

22

あなたが使用する%%ではなく、\%%%

+0

+1スピードレースに勝つために+1: –

+2

"man printf"は本当にあなたのシステムでPerlの機能について教えてくれますか?鉱山では、コマンドラインプログラムについてのみ説明しています。私は "man 3 printf"でC関数を得ることができます。私がPerl関数について読んでみたいのであれば、 "perldoc -f printf"を使用します。 –

+0

少なくとも、私たちはすべて答えに同意するようです。 – mirod

5

代わりの\%使用(男性printfから):)

2

単一の%を出力するには%%を使用してください。

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

%% for single%

3

このような状況では、同じことをやったはずの粗大な代替品がありました。

印刷文字列として「%」記号は:printf用のテンプレートのドキュメントがsprintfのドキュメントに実際にあるので

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

これは少しトリッキーです。そこを見ることを知るには、段落の途中でその行を捕らえなければなりません。

関連する問題