关于单精度实型float输出时的问题
void main(){
float f1=123.456;
printf("f1=%f,f1=%7.2f,f1=%-7.2f,f1=%e,f1=%g\n",f1,f1,f1,f1,f1);
getch();
}
输出结果是f1=123.456001,f1=口123.46,f1=123.46口,f1=1.23456e+02,f1=123.456。(其中口代表空格,getch()是编译环境win-tc必加的一句)
请问:1,为什么第一个f1输出的不是123.456而是123.456001,后面为什么还有001?而书上多的是000。
2,为什么第二个和第三个的f1输出是舍去了5?怎么数值不是123.45而是123.46?
3,在C语言中有条“就长不就短”的自动转换原则,即当运算时参加运算的数据都转换成最长的数据类型。OK,那当遇到数据长度一样,但类型不一的时候怎么办呢?比如遇到long和float运算时该怎么转换?