';printf';在C中有前导零
我有一个浮点数,比如';printf';在C中有前导零,c,formatting,printf,C,Formatting,Printf,我有一个浮点数,比如4917.24。我想把它打印成在小数点前始终有五个字符,前导零,然后在小数点后有三位数字 我在正在使用的嵌入式系统上尝试了printf(“%05.3f”,n),但它打印***。格式说明符是否正确?您的格式说明符不正确。从我的机器上的printf()手册页: 0零'0'字符,指示应使用零填充而不是空白填充。如果同时使用了“-”,则“
4917.24
。我想把它打印成在小数点前始终有五个字符,前导零,然后在小数点后有三位数字
我在正在使用的嵌入式系统上尝试了
printf(“%05.3f”,n)
,但它打印***
。格式说明符是否正确?您的格式说明符不正确。从我的机器上的printf()
手册页:
0
零'0
'字符,指示应使用零填充而不是空白填充。如果同时使用了“-
”,则“<0
”会覆盖“<0”
字段宽度:
指定字段宽度的可选数字字符串;如果输出字符串的字符数少于字段宽度,则将在左侧(或右侧,如果已给出左侧调整指示器)填充空白,以弥补字段宽度(请注意,前导零是标志,但嵌入零是字段宽度的一部分)
精度:可选句点“
”,后跟可选数字字符串,给出精度,指定小数点后出现的位数,用于e和f格式,或从字符串打印的最大字符数;如果缺少数字字符串,则将精度视为零
对于您的情况,您的格式为%09.3f
:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%09.3f\n", 4917.24);
return 0;
}
请注意,此答案取决于您的嵌入式系统是否具有符合这些详细信息标准的printf()
实现-许多嵌入式环境没有此类实现。谢谢,我看到了我所犯的错误。让它在PC上运行,我的嵌入式系统仍然没有正确格式化,将不得不做一个变通。请注意,微软的printf()显然不是在浮点数字上加前导零。
$ make testapp
cc testapp.c -o testapp
$ ./testapp
04917.240