3

このコードでプログラムをコンパイルすると:

int main()
{
  float a;

  scanf("%f", &a);

  printf("%.1f\n", a); //Here

  return 0;
}

これとの違いはありません:

int main()
{
  float a;

  scanf("%f", &a);

  printf("%.01f\n", a); //Here

  return 0;
}

誰でも理由を教えてくれますか?

4

3 に答える 3

3

ピリオドの後ろの数値は、浮動小数点値の小数点以下の桁数を指定する精度です。先頭のゼロには意味がありません。

ピリオドの前の数字は、最小フィールド幅を指定する数字です。先頭のゼロは、パディング文字を空白から0に変更します。

于 2013-02-25T05:28:13.380 に答える
2

小数点以下の桁数は、精度 (書き込まれる最小桁数) を指定します。.1 と .01 はどちらも、少なくとも 1 桁を入力し、1 桁未満の場合は結果にゼロを埋め込むことを示しています。Plainは、つまり小数点以下 6 桁に%f相当します。%.6f

于 2013-02-25T04:53:13.943 に答える
-1

最初のプログラムの出力は、たとえば次のようになります。a=100 両方の印刷コマンドの場合、100.000000 になります (倍精度のデフォルトの精度は 6 です) 100.0 のみ。ここで、2 番目のプログラムの値は 100.000000 (デフォルトでは double の精度) 100.0 になります。

于 2018-12-29T14:12:28.277 に答える