我有一个浮点数,例如4917.24
。我想将它打印到小数点前总共有五个字符,前导零,小数点后三位数。
我在我正在使用的嵌入式系统上尝试了printf("%05.3f", n)
,但它打印了*****
。我的格式说明符是否正确?
答案 0 :(得分:56)
您的格式说明符不正确。从我机器上的printf()
手册页:
0
零'0
'字符表示应使用零填充而不是空填充。如果两者都使用,则“-
”会覆盖“0
”;场宽: 一个可选的数字字符串,指定字段宽度;如果输出字符串的字符数少于字段宽度,则在左侧(或右侧,如果已给出左调整指示符)进行空白填充以构成字段宽度(请注意,前导零是标记,但嵌入的零是字段宽度的一部分;
精确度:一个可选的句点,“
.
”,后跟一个可选的数字字符串,给出精确度,指定小数点后显示的位数, e 和 f 格式,或字符串中要打印的最大字符数;如果缺少数字字符串,则将精度视为零;
对于您的情况,您的格式为%09.3f
:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%09.3f\n", 4917.24);
return 0;
}
输出:
$ make testapp
cc testapp.c -o testapp
$ ./testapp
04917.240
请注意,这个答案取决于您的嵌入式系统具有printf()
实现,这些实现符合这些细节的标准 - 许多嵌入式环境不具有此类实现。