c语言中%6.2f输出结果问题#include<stdio.h> main() { float a=12345678.1234567; printf("%6.2f",a); }

为什么结果会是12345678.00

%6.2f 这是输出格式
6表示输出数字的长度共有6位,包括小数点。比如233.15这样就是6位
.2是表示小数点后面保留两位小数。
如果实际输出的长度大于6的话,那就会按照原来的长度输出,因为6位不够,所以输出的数字会产生溢出。
如果小于6位的话,左边补空格,也就是“ 23.5”
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-03-18
我的编译器提示:warning C4305: “初始化”: 从“double”到“float”截断

是这样子的,float的精度有限, 下面是我从baike上截的: c/c++数据类型
浮点数(floating point number),占用4byte ,范围:3.4e + / - 38 (7 个数字(7digits))

应该是7~8个位数字

如果你换成double的话就可以通过了

double大概保留15~16位

像这上面你写的float a=12345678.1234567

等号左边是float类型,但右边是double类型

因此发生了截断, 相当于某种程度上的向上取整。本回答被提问者采纳
第2个回答  2010-03-17
因为%6.2f意思小数点前面是域宽,后面是精度。也就是6是域宽,2是精度(小数点保留两位)
第3个回答  2010-03-17
楼上的就算是两位精度也是12345678.12为什么是.00了?后面有知道的麻烦解释下,谢了
相似回答