与%.1f和%.01f的任何差异?

时间:2013-02-25 04:46:16

标签: c floating-point format

当我使用此代码编译程序时:

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;
}

任何人都可以告诉我为什么?

3 个答案:

答案 0 :(得分:3)

句点后面的数字是精度,它指定浮点值小数点后的位数。领先的零没有任何意义。

句点之前的数字是指定最小字段宽度的数字。前导零将填充字符从空格更改为0。

答案 1 :(得分:2)

小数点后面的数字指定精度 - 将写入的最小位数。 .1和.01都说要放至少1位,如果少于1位,则用零填充结果。普通%f相当于%.6f,即小数点后的6位数。

答案 2 :(得分:-1)

第一个程序的输出例如。 a = 100 对于两个打印命令,它将是 100.000000(默认情况下,double的精度为6) 100.0 只要。 其中,第二个程序将具有以下值: 100.000000(默认为double的精度) 100.0