我对此进行了一些搜索,但还没有得到特别直接的答案。在C(我猜是C++)中,使用时如何确定%后面的内容 printf?。例如:

double radius = 1.0;
double area = 0.0;
area = calculateArea( radius );
printf( "%10.1f     %10.2\n", radius, area );

我直接从一本关于 C 语言的书中获取了这个示例。这对我来说根本没有意义。你从哪里想到的 10.1f10.2f?有人可以解释一下吗?

有帮助吗?

解决方案

http://en.wikipedia.org/wiki/Printf#printf_format_placeholders 是 Wikipedia 对 printf 中格式占位符的参考。 http://www.cplusplus.com/reference/clibrary/cstdio/printf.html 也有帮助

基本上,简单的形式是%[宽度].[精度][类型]。宽度允许您确保正在打印的变量至少具有一定的长度(对于表格等有用)。Precision 允许您指定数字打印的精度(例如小数位等),并告知 C/C++ 你给它的变量是什么(字符、整数、双精度等)。

希望这可以帮助

更新:

使用您的示例来澄清:

printf( "%10.1f     %10.2\n", radius, area );

%10.1f(指第一个参数:radius) 意味着使其长度为 10 个字符(即用空格填充),并将其打印为带有一位小数的浮点数。

%10.2(指第二个参数:area) 表示使其长度为 10 个字符(如上所述)并打印保留两位小数。

其他提示

man 3 printf

在 Linux 系统上将为您提供所需的所有信息。您还可以在线找到这些手册页,例如: http://linux.die.net/man/3/printf

10.1f表示小数点后1位、小数点前10位的浮点数。如果数字少于 10 位,则用空格填充。10.2f 相同,但小数点后保留 2 位。

在我见过的每个系统上,从 Unix 到 Rails 迁移,情况并非如此。@robintw 表达得最好:

基本上,简单的形式是%[宽度].[精度][类型]。

也就是说,不是“10个地方 小数点”,但是“10位, 之前和之后,并且包括 小数点。”

10.1f 表示 10 个字符宽、小数点后 1 位的浮点数。如果数字少于 10 位,则用空格填充。10.2f 相同,但小数点后保留 2 位。

您有以下基本类型:

%d   - integer
%x   - hex integer
%s   - string
%c   - char (only one)
%f   - floating point (float)
%d   - signed int (decimal)
%i   - signed int (integer) (same as decimal).
%u   - unsigned int
%ld  - long (signed) int
%lu  - long unsigned int
%lld - long long (signed) int
%llu - long long unsigned int

编辑:@Eli 的回复 (man 3 printf) 中列出了其他几个。

简而言之,% 后面的那些值告诉 printf 如何解释(或输出)稍后出现的所有变量。在你的例子中, radius 被解释为浮点数(即“f”),并且 10.1 提供有关打印时要使用多少位小数的信息。

这个链接 有关可与 printf 一起使用的所有修饰符的更多详细信息。

10.1f 意味着你想显示一个 F1 小数,显示的数字应该是 10 长字符。

手册页包含您想要的信息。要阅读上面的内容:

printf( "%10.2f", 1.5 )

这将打印:

         1.50

然而:

printf("%.2f", 1.5 )

印刷:

1.50

注意两者的合理性。相似地:

printf("%10.1f", 1.5 )

将打印:

        1.5

后的任意数字。是你想要打印的精度。之前的任何数字。是距左边距的距离。

其他人没有提出的一个问题是: 双倍的 与 a 相同 漂浮. 。在某些系统上,双精度数与浮点数需要不同的格式说明符。尤其是因为传递的参数可能具有不同的大小。

 %f - float
 %lf - double
 %g - double

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top