printf浮点数格式宽度选项是否排除末尾小数点?示例疑问
关于
printf("%5.0f.", e)输出疑问的解答 首先要明确格式说明符的作用边界:%5.0f是一个完整的转换说明,格式字符串末尾的.是普通字符,不属于这个转换的一部分,两者是独立输出的。
%.0f表示对浮点数e=2.718281828做四舍五入后,仅输出整数部分,也就是3,这个转换结果的长度是1个字符。%5.0f中的5是转换结果的最小宽度:当转换后的字符长度小于5时,会在前面用空格填充,让总长度达到5。所以3前面会补4个空格,得到3。- 最后格式字符串里的
.会直接追加在转换结果后面,最终输出就是3.——这就是你看到数字3和小数点前有四个空格的原因。
你之前的误解在于把格式字符串里的.算进了%5.0f的宽度计算里,但实际上宽度参数只作用于转换说明对应的输出内容,格式字符串里的其他普通字符是单独输出的,不参与转换宽度的计算。
内容的提问来源于stack exchange,提问作者user18633153
相关产品推荐
相关产品推荐

