int main ()
{
float Num = 3254.4;
printf("%06.4f",Num);
return 0;
}
为什么它不打印003254.3999
作为我的期望,而是3254.3999
?
答案 0 :(得分:5)
来自您的参考:
宽度:
要打印的最小字符数。如果要打印的值小于此数字,则结果将填充空格。即使结果较大,也不会截断该值。
请注意,这会计算所有字符,包括。和小数点后四位
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
答案 1 :(得分:3)
将6
更改为10
或更高版本,您会看到0
填充。您指定的6
是它将打印的最小字符。你的号码(3254.3999)有九个。
答案 2 :(得分:1)
试试这个:
int main ()
{
float Num = 3254.4;
printf("%011.4f",Num);
return 0;
}
即,尝试更改大于6的说明符值,因为您指定了最小字符数限制。
答案 3 :(得分:1)
这是因为6
用于将输出右对齐到6个位置。由于输出宽度为9位,因此效果不明显。如果增加宽度,则可以看到效果。