• ベストアンサー

Perlのsprintfで使われるフォーマット書式について

Perlのsprintfで使われるフォーマット書式で例えば、 100.15という値があり、 [ 100.1500]と表示させたい場合、 %f11.4で良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • W_H
  • ベストアンサー率47% (21/44)
回答No.1

まず根本的に書き方が違います。 %f11.4ではなく、%11.4fです。 %[効果文字][変換文字] が基礎文法となります。 [効果文字]は例えば数字や+-0#などの記号です。 [変換文字]は、dfsなどの最後に付き、データをどのような形で統一するのかを記すアルファベットになります。 今回の場合、小数点以下の最大桁数が4なので、効果文字に[.4]を。結果は整数値でなく固定小数点なので、変換文字に[f]をそれぞれ入れれば大丈夫です。 $a=sprintf("%.4f",100.15); print $a,"\n"; このようにすればいいでしょう。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

%11.4f (fは単に記入漏れだと判断します)だと、 確かに小数点以下は4桁になりますが、数値全体で11桁確保します。 どうも [ 100.1500] というのが空白がシステムの都合で圧縮されているようなので 本当に質問者さんが出そうとしている桁数なのかを 判断することができませんが、そこを除けば 間違っていないと思います。 空白の代わりに0で埋めるようにすると $perl -e 'printf "[%011.4f]", 100.15' [000100.1500] こんなんなりますが、この桁数でよいのでしょうか?