%.1f和%.01f有什么不同?

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

有人能告诉我为什么吗?


我会从格式字符串的细节入手,特别是涉及到浮点数格式化、精度和对齐方式的部分。这个链接提供了相关信息:http://en.cppreference.com/w/c/io/fprintf。 - WhozCraig
非常感谢,我会阅读您给我的信息。 - Christian Cisneros
3个回答

3

小数点后的数字是精度,它指定浮点值小数点后的位数。前导零没有意义。

小数点前的数字是最小字段宽度,它指定了数字的最小显示位数。前导零将把填充字符从空格更改为0。


2
小数点后面的数字指定了精度 - 将写入的最小数字数量。.1 和 .01 都表示至少放置 1 个数字,并在少于 1 个数字时用零填充结果。普通的 %f 等同于 %.6f,即小数点后面有 6 位数字。

-2
第一个程序的输出将为例如a=100。 对于两个打印命令,它将是 100.000000(默认double精度为6) 100.0 而第二个程序将具有值: 100.000000(默认double精度) 100.0

嘿,欢迎来到Stack Overflow!我发现你的答案很难读懂,也许你可以重写一下,使意思更清晰?这个问题也很老了,你有检查过你的答案是否提供了其他答案没有的新内容吗? - totokaka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接