%3.1f 在 C 中做什么?

Joh*_*ton 0 c

我正在阅读一本关于 C 的老派(1990)书,里面有一个数字格式,循环如下:

... 
...
printf("%3.1f %15.10f\n",x, x*x+x+1/x);
Run Code Online (Sandbox Code Playgroud)

书上说的是

%m.kf将float(或double)类型的值转换为m小数点位置,并k在句点后添加数字。

玩完这个之后我仍然完全困惑。

我玩过这个。 http://cstub.com/196059842/

#include <stdio.h>
int main( int argc, const char* argv[] )
{
    double f = 1.55568;
    printf("%10.12f",f);
}
Run Code Online (Sandbox Code Playgroud)

1.555680824083

gsa*_*ras 5

检查这个例子:

double f = 1.234;
printf("%10.2f",f); // 10 positions wide, 2 decimals at most
Run Code Online (Sandbox Code Playgroud)

输出:

      1.23 <- print only 2 decimal digits
^^^^^^^^^^
||||||||||
0123456789 <- positions
Run Code Online (Sandbox Code Playgroud)

当您想要输出统计数据并且希望所有内容都很好地对齐时,这样的代码有点常见。


在你的例子中:

double f = 1.55568;
printf("%10.12f",f);
Run Code Online (Sandbox Code Playgroud)

您说在句点后最多打印 12 位数字。当然,由于其表示形式,该数字的位数比您在分配值时写入的位数要多。

你还说打印的内容最少应该有10个位置,这意味着如果数字不够大,则会在数字前面放置空格,以满足要求。