- ベストアンサー
文の意味
%5.2f とあったら、表示する桁数は全部で(小数点も含め)5桁、小数点以下は2桁です。1.26は 1.26 と表示されます。全部で5桁なのでまだ1桁余っていますね。余った分は1桁分空白で表示されています。 %の次に-がない場合は右詰めになるのです。 %-5.2f とすると 1.26 と表示されます。 これらの文の意味がわからないのですが、意味がわかる方教えて下さい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>1.26だと4文字といっていますが・・・ >3文字じゃないのですか? 数字の数だけ数えるわけではありませんよ? 1文字目=>'1' 2文字目=>'.' 3文字目=>'2' 4文字目=>'6' です。 # 実際には5文字目=>'\0'ですが…。 strlen("1.26")は4になりますよね? 「%5.2f」指定だと5文字という指定ですから不足分を空白で補います。 「なんで?」と問われれば、「そういう仕様だから」となりますかね。
その他の回答 (5)
- kmee
- ベストアンサー率55% (1857/3366)
ちゃんと質問の中にも書いてあるじゃないですか > 表示する桁数は全部で(小数点も含め)5桁
お礼
いやいやお恥ずかしい(笑) 回答ありがとうございます。
- kmee
- ベストアンサー率55% (1857/3366)
%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# 数値については同上。 「-」があるので左詰め。空白は右に補う
補足
>>1.26だと4文字なので 1.26だと4文字といっていますが・・・ 3文字じゃないのですか? ちょっとわかりません。
- Wr5
- ベストアンサー率53% (2173/4061)
>なぜ%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)
printf関数等で使用される書式指定子に関する疑問かな? URL 先を参照して下さい。 また、検索エンジンで「 printf 書式 」等で検索すれば説明してくれている多くのHPを見つけることができると思います。 見当違いの解答なら失礼。
お礼
回答ありがとうございます。
- kmee
- ベストアンサー率55% (1857/3366)
ここだと、空白は削られたりまとめられたりして、入力通りには表示されません。他の文字を使うとかしてください。そうでないと、なにがいいたいか、何が理解できないのかが、わかりません。 この説明が、printf等で書式を指定するときに使う文字列のことだ、ということは理解できてますか?
補足
>>printf等で書式を指定するときに使う文字列のことだ、ということは理解できてますか? 理解できています。 それ以前に小数の計算がわからないのだと思います。 なぜ%5.2fとあったら1.26となるのか・・・がわかりません。
お礼
よく解りました、回答ありがとうございます。