このコードでプログラムをコンパイルすると:
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;
}
誰でも理由を教えてくれますか?
このコードでプログラムをコンパイルすると:
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;
}
誰でも理由を教えてくれますか?
ピリオドの後ろの数値は、浮動小数点値の小数点以下の桁数を指定する精度です。先頭のゼロには意味がありません。
ピリオドの前の数字は、最小フィールド幅を指定する数字です。先頭のゼロは、パディング文字を空白から0に変更します。
小数点以下の桁数は、精度 (書き込まれる最小桁数) を指定します。.1 と .01 はどちらも、少なくとも 1 桁を入力し、1 桁未満の場合は結果にゼロを埋め込むことを示しています。Plainは、つまり小数点以下 6 桁に%f
相当します。%.6f
最初のプログラムの出力は、たとえば次のようになります。a=100 両方の印刷コマンドの場合、100.000000 になります (倍精度のデフォルトの精度は 6 です) 100.0 のみ。ここで、2 番目のプログラムの値は 100.000000 (デフォルトでは double の精度) 100.0 になります。