繁体   English   中英

printf中的子说明符

[英]The sub-specifier in printf

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更改为10或更大,您将看到0填充。 您指定的6是它将打印的最小字符。 你的号码(3254.3999)有九个。

试试这个:

int main ()
{
    float Num = 3254.4;
    printf("%011.4f",Num);
    return 0;
}

即,尝试更改大于6的说明符值,因为您指定了最小字符数限制。

这是因为6用于将输出右对齐到6个位置。 由于输出宽度为9处,因此效果不明显。如果增加宽度,则可以看到效果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM