事实上你如果在printf里用%f输出浮点的话,默认的小数部分永远有6位,这只是输出小数的惯例罢了,根本没有深究的必要,如果你觉得一串0看起来不舒服,可以用%g或者%a.bf之类的格式控制小数显示的位数,如果希望依靠语言本身来确定计算是否精确,那么还是放弃这种想法吧。另外说一句,float(111)是c++才支持的格式,如果用的纯c还是用括号打在类型上的比较好。
你到底想干嘛?printf("%d")输出的永远是整数。
double number=2.5;
float value;
value=(float)number;
printf("%f\n",value);
强制转换要求与目标类型相同
不同类型之间可以强制转换,但可能有损失,比如
把float value=2.5,强制转换为int a=(int)value,就会损失小数部分。所以能不进行强制转换,就尽量不要用。
number 是 int 型的,不能存贮 float 型,可以这样:
printf("\nThe number is %f.",value);
改成
float number = 0;
float value = 2.5f;
就可以了
最后的输出是怎么可能是2.5,当然是2啊