设有定义:floatx=123.4567;则执行下列语句后的输出结果是—— printf("%f\n",(int)(x*100+0.5)/100.0);

问题描述:

设有定义:floatx=123.4567;则执行下列语句后的输出结果是—— printf("%f\n",(int)(x*100+0.5)/100.0);

#define floatx 123.4567
main
{
#ifdef floatx
{
printf("%f\n",(int)(x*100+0.5)/100.0);
}
getchar();
}
兄弟看来你没有理解啊,我帮你细细的分析一下吧..
首先 printf("%f\n",(int)(x*100+0.5)/100.0);
%f是以单精度的形式输出,知道的吧?
(int)(x*100+0.5)/100.0中可以拆分来看,(int)(x*100+0.5)是一个强制类型转换成整型,结果为
(int)(123.4567*100+0.5)即等于(int)(12346.17)即等于12346
我们再分析12346/100.0即等于123.46,关键输出的结果要以单精度float的形式输出来,单精度的小数点精确为6位,即结果为123.460000