電子書籍の厳選無料作品が豊富!

C言語についてです
出力幅についていまいち
よく分からないのですが
%3.1lfとしているのに
7.0のとこが少しずれてしまいます
なぜでしょうか?

「C言語についてです 出力幅についていまい」の質問画像

A 回答 (4件)

%3.1lfの l は意味不明です。

このオプションは f のとき有効ではありません。
%の次の数値は全体の桁数です。整数部の桁数ではありません。
この場合、%+5.1f とすれば、
 12345
  +7.0
 -16.0
 -23.0
となるはずです。
    • good
    • 0

具体的なプログラムはどうなってますか?


%3.1fだと、 + 記号は出力されないので、 +7.0 とはならないはずです。

%で指定されるフィールド幅は、 +や-の符号、小数点を含めた「最小の文字数」になります。
%5.1f だと
・7.0 で3文字なので 2つ空白が追加されて5文字になる
・236.0 で5文字なので 追加なしで5文字になる
・-123.0 で6文字なので 追加なし/削除も無しで6文字になる
小数点の位置をそろえたいなら、十分なフィールド幅を指定する必要があります。



なお、printfの %lf には、とても複雑な事情があります。
http://www.kijineko.co.jp/tech/superstitions/pri …
    • good
    • 0

No2さんの回答であっています。



全体の桁数の意味なので小数点後も数に含みます。
桁数を制限するものではないので、指定した桁数を超えて表示されます。

あと、
>%3.1lfの l は意味不明です。このオプションは f のとき有効ではありません。
とありますが、普通にdouble型の型指定子としてlfを使いますよ?
    • good
    • 0

ソースコードを書いてみてください

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!