【发布时间】:2014-01-07 01:06:30
【问题描述】:
int main ()
{
float Num = 3254.4;
printf("%06.4f",Num);
return 0;
}
为什么它没有像我预期的那样打印003254.3999,而是3254.3999?
【问题讨论】:
int main ()
{
float Num = 3254.4;
printf("%06.4f",Num);
return 0;
}
为什么它没有像我预期的那样打印003254.3999,而是3254.3999?
【问题讨论】:
来自您的参考:
宽度:
要打印的最少字符数。如果要打印的值比这个数字短,结果用空格填充。即使结果更大,该值也不会被截断。
请注意,这会计算所有字符,包括 .和四位小数
向左 6 + 向右 4 + 小数点 1 = 11 (不是 10)
你想要的是“%011.4f”
对此进行了测试:
printf("%011.4f\n", 1.4);
结果是:
000001.4000 // note 6 to the left and 4 to the right (plus the .) = 11
【讨论】:
'6' 仅适用于 '.' 左侧的内容。他不一定希望用两个'0's 填充它。
将6 更改为10 或更大,您将看到0 填充。您指定的 6 是它将打印的最少字符。您的号码 (3254.3999) 有九个。
【讨论】:
printf("%011.4f\n", 1.2344); 结果是000001.2344 .
试试这个:
int main ()
{
float Num = 3254.4;
printf("%011.4f",Num);
return 0;
}
即,尝试将说明符值更改为大于 6,因为您指定了最小字符数限制。
【讨论】:
0前面的10:printf("%010.4f",Num);
这是因为6 用于将输出右对齐到 6 个位置。由于输出的宽度为 9 位,因此效果不可见。如果增加宽度,则可以看到效果。
【讨论】: