C 打印浮动,每侧最多四处
我是新手,我试图打印一个C 打印浮动,每侧最多四处,c,floating-point,printf,C,Floating Point,Printf,我是新手,我试图打印一个float值,每边最多四个位置。例如,11.3将是0011.3000。为此,我使用以下行:- float t = 11.3; printf("%4.4f", t); 但是我得到了11.3000。那么,我到底想做什么呢?如果是,那怎么办?谢谢您的代码片段中f的类型不正确,应该是float或double 要产生前导零,请使用0printf修饰符,并在示例中指定所需的最小宽度,即9个字符(示例中前面的4个位置加上后面的4个位置) 因此,格式为%09.4f 代码如下: #inc
float
值,每边最多四个位置。例如,11.3
将是0011.3000
。为此,我使用以下行:-
float t = 11.3;
printf("%4.4f", t);
但是我得到了
11.3000
。那么,我到底想做什么呢?如果是,那怎么办?谢谢您的代码片段中f
的类型不正确,应该是float
或double
要产生前导零,请使用0
printf
修饰符,并在示例中指定所需的最小宽度,即9个字符(示例中
前面的4个位置加上
后面的4个位置)
因此,格式为%09.4f
代码如下:
#include <stdio.h>
int main() {
double t = 11.3;
printf("%09.4f\n", t);
return 0;
}
但是请注意,如果该数字为负数,则在
之前只会有3个位置,如果该数字的绝对值太大(9999.99995
),则输出将超过9个字符。如果您想在
前面也有4个位置表示负值,则应使用%010.4f
:如果为正值,则数字的前缀将为空格,如果为负值,则前缀为-
:
#include <stdio.h>
int main() {
double t = 11.3;
printf("%09.4f\n", t);
printf("% 010.4f\n", t);
printf("% 010.4f\n", -t);
return 0;
}
代码片段中的
f
类型不正确,应该是float
或double
要产生前导零,请使用0
printf
修饰符,并在示例中指定所需的最小宽度,即9个字符(示例中
前面的4个位置加上
后面的4个位置)
因此,格式为%09.4f
代码如下:
#include <stdio.h>
int main() {
double t = 11.3;
printf("%09.4f\n", t);
return 0;
}
但是请注意,如果该数字为负数,则在
之前只会有3个位置,如果该数字的绝对值太大(9999.99995
),则输出将超过9个字符。如果您想在
前面也有4个位置表示负值,则应使用%010.4f
:如果为正值,则数字的前缀将为空格,如果为负值,则前缀为-
:
#include <stdio.h>
int main() {
double t = 11.3;
printf("%09.4f\n", t);
printf("% 010.4f\n", t);
printf("% 010.4f\n", -t);
return 0;
}
格式规范的第一部分是要打印的字段的宽度,而不是小数点前的位数。您想要的输出中有9个字符,在左边填充零,也可以这样做
float t = 11.3;
printf("%09.4f", t);
例如,如果数字的整数部分变得太大,无法进行更精细的控制,则可能会出现故障,请使用整数:
float t = 11.3;
int i, f;
i = (int)t;
f = (int)((t - i) * 10000 + 0.5);
printf("%04d.%04d", i, f);
所有这些假设都是正数。此处显示的两个示例都不能正确处理负片。格式规范的第一部分是要打印的字段的宽度,而不是小数点前的位数。您想要的输出中有9个字符,在左边填充零,也可以这样做
float t = 11.3;
printf("%09.4f", t);
float t = 11.3;
printf("%4.4f", t);
例如,如果数字的整数部分变得太大,无法进行更精细的控制,则可能会出现故障,请使用整数:
float t = 11.3;
int i, f;
i = (int)t;
f = (int)((t - i) * 10000 + 0.5);
printf("%04d.%04d", i, f);
所有这些假设都是正数。这里显示的两个示例都不能正确处理负片
float t = 11.3;
printf("%4.4f", t);
在上述代码中,4之前。表示要打印的字符总数。
小数点后的平均字符数。
因为您想要xxxx.xxxx,所以您应该这样写:
printf("%9.4f", t);
在上述代码中,4之前。表示要打印的字符总数。
小数点后的平均字符数。
因为您想要xxxx.xxxx,所以您应该这样写:
printf("%9.4f", t);
%04.4f
,iirc,产生领先的zeroes@collapsar,不行不行不行,兄弟%09.4f
可能会更好。9表示“在一个9个字符宽的字段中打印”,第一个数字是字段的总大小,第二个是精度。您需要的是“%09.4f”。%04.4f
,iirczeroes@collapsar,不行不行不行,兄弟%09.4f
可能会更好。9表示“在一个9个字符宽的字段中打印”,第一个数字是字段的总大小,第二个是精度。您想要的是“%09.4f”。谢谢,先生,但不需要双倍。至少在我的情况下,浮动也是如此working@TabishSaifullah:如果您愿意,可以将f
声明为float
,而无需任何其他修改。然而,使用float
并不会节省太多:float
值在传递到printf
时会转换为double
。除了在计算能力较低的嵌入式系统上,它们的精度要低得多,速度也不比double快。如果您的平台是普通PC,我建议对所有浮点计算使用double
。@chqrlie:在许多情况下,float
性能比现代通用处理器上的double
快。除法和平方根通常更快,即使加法、减法和乘法相同。库例程(如余弦和对数)在float
版本中通常比在double
中更快。手动或自动矢量化的代码在float
中的速度可能是原来的两倍。反过来,这意味着诸如FFT、BLAS或其他数组处理例程之类的例程将更快。当然,数据越小,内存复制的速度就越快。谢谢,先生,但不需要加倍。至少在我的情况下,浮动也是如此working@TabishSaifullah:如果您愿意,可以将f
声明为float
,而无需任何其他修改。然而,使用float
并不会节省太多:float
值在传递到printf
时会转换为double
。除了在计算能力较低的嵌入式系统上,它们的精度要低得多,速度也不比double快。如果您的平台是普通PC,我建议对所有浮点计算使用double
。@chqrlie:wh中有多种情况