使用printf通过十进制对齐双精度不工作

时间:2013-12-04 23:53:21

标签: c printf

我想打印双打,以便小数排成一行。例如:

1.2345
12.3456

应该导致

 1.2345
12.3456

我到处寻找,最重要的建议是使用以下方法(5s可以是任何东西):

printf(%5.5f\n");

我用以下(非常)简单的程序试过这个:

#include <stdio.h>

int main() {
  printf("%10.10f\n", 0.523431);
  printf("%10.10f\n", 10.43454);
  return 0;
}

我的输出是:

0.5234310000
10.4345400000

为什么这不起作用?

2 个答案:

答案 0 :(得分:3)

.之前的数字是最小字符总计,而不是在小数点之前。

printf("%21.10f\n", 0.523431);

答案 1 :(得分:2)

当你使用"%10.10f"时,你告诉printf()“使用10个字符位置来打印数字(可选减号,整数部分,小数点和小数部分)。从这10个位置,保留10对于小数部分。如果不可能,忽略第一个数字并使用打印数字所需的任何位置,以便保持小数位数“

这就是printf()正在做的事情。

所以你需要指出你要使用多少个位置,例如15,以及这些位置中的多少个位数......例如,9。这将留下5个位置减号和整数部分以及小数点的一个位置。

也就是说,在printf的

中试试"%15.9f"