• ベストアンサー

文の意味

%5.2f とあったら、表示する桁数は全部で(小数点も含め)5桁、小数点以下は2桁です。1.26は 1.26 と表示されます。全部で5桁なのでまだ1桁余っていますね。余った分は1桁分空白で表示されています。 %の次に-がない場合は右詰めになるのです。 %-5.2f とすると 1.26 と表示されます。 これらの文の意味がわからないのですが、意味がわかる方教えて下さい。

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

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.5

>1.26だと4文字といっていますが・・・ >3文字じゃないのですか? 数字の数だけ数えるわけではありませんよ? 1文字目=>'1' 2文字目=>'.' 3文字目=>'2' 4文字目=>'6' です。 # 実際には5文字目=>'\0'ですが…。 strlen("1.26")は4になりますよね? 「%5.2f」指定だと5文字という指定ですから不足分を空白で補います。 「なんで?」と問われれば、「そういう仕様だから」となりますかね。

noname#229881
質問者

お礼

よく解りました、回答ありがとうございます。

その他の回答 (5)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.6

ちゃんと質問の中にも書いてあるじゃないですか > 表示する桁数は全部で(小数点も含め)5桁

noname#229881
質問者

お礼

いやいやお恥ずかしい(笑) 回答ありがとうございます。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

%5.2f の「5.2」というのは、「小数」というわけではありません。 仕様を決めるときに %5/2f とか %5#2f とかしてもよかったものです。小数点はただの区切り文字です。 おそらく、「小数の桁」を連想させるので「小数点」に決めたのだと思います。 また、「-」についても、「通常の逆」程度の意味です。これも %<5.2fとかでもよかったかもしれません。 おそらく、数値っぽいもので統一したかったのでしょう。 1.26だと.2の動作がわかりずらいと思うので、もう一桁つかった 1.263 で例示します。 あと、空白が消されてしまうので、#で代用します printf("%5.2f",1.263) → #1.26 全部で5文字。 小数点以下は2桁なので26まで表示されて3は表示されない。 1.26だと4文字なので、5-4=1文字の空白が補われる。 「-」が無いので右詰め。空白は左に補う printf("%-5.2f",1.263) → 1.26# 数値については同上。 「-」があるので左詰め。空白は右に補う

noname#229881
質問者

補足

>>1.26だと4文字なので 1.26だと4文字といっていますが・・・ 3文字じゃないのですか? ちょっとわかりません。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

>なぜ%5.2fとあったら1.26となるのか・・・がわかりません。 「全部で5桁。小数点以下は第2位まで出力したい」からそのように指定しているのでしょう。 +-----+-----+-----+-----+ |1.23_|23.45|5.60_|7.89_| +-----+-----+-----+-----+ |52.40|0.01_|0.00_|17.89| +-----+-----+-----+-----+ とか、桁を揃えて出力したい。という要望に対応するため。 でしょう。 # スペースは_で置き換え。 # ですが…プロポーショナルピッチだとヘンに見えるかも。 # テキストエディタなどにコピペして下さい。 +-----+-----+-----+-----+ |_1.23|23.45|_5.60|_7.89| +-----+-----+-----+-----+ |52.40|_0.01|_0.00|17.89| +-----+-----+-----+-----+ というように、セル内(?)で右寄せにしたい…というのとか。 +-----+-----+-----+-----+ |1.23476|23.45211|5.6|7.89923| +-----+-----+-----+-----+ |52.4|0.0133333333|0|17.892232| +-----+-----+-----+-----+ とか、無秩序に桁数がバラバラで出力されても見難いでしょう?

  • happycup
  • ベストアンサー率42% (9/21)
回答No.2

printf関数等で使用される書式指定子に関する疑問かな? URL 先を参照して下さい。 また、検索エンジンで「 printf 書式 」等で検索すれば説明してくれている多くのHPを見つけることができると思います。 見当違いの解答なら失礼。

参考URL:
http://www.k-cube.co.jp/wakaba/server/format.html
noname#229881
質問者

お礼

回答ありがとうございます。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

ここだと、空白は削られたりまとめられたりして、入力通りには表示されません。他の文字を使うとかしてください。そうでないと、なにがいいたいか、何が理解できないのかが、わかりません。 この説明が、printf等で書式を指定するときに使う文字列のことだ、ということは理解できてますか?

noname#229881
質問者

補足

>>printf等で書式を指定するときに使う文字列のことだ、ということは理解できてますか? 理解できています。 それ以前に小数の計算がわからないのだと思います。 なぜ%5.2fとあったら1.26となるのか・・・がわかりません。

関連するQ&A