首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

百思不得其解,还请迷津

2012-03-03 
百思不得其解,还请高手指点迷津intmain(void){floatY,zintX5,X2,X1Y0.07zY/0.01X2z//语句1X1Y/0.

百思不得其解,还请高手指点迷津
int   main(void)
{
        float   Y,z;
        int   X5,X2,X1;  
        Y=0.07;

          z=Y/0.01;       X2=z;         //语句1

        X1=Y/0.01;                         //语句2

printf( "\nz=%f,X1=%d张,X2=%d ",z,X1,X2);
}

语句1和语句2应该是功能   是相同的呀,
为什么用语句2当Y=0.07值时X1=7;但当Y=0.06时X1=5;       而当用语句1却不同且是正确的答案

???为什么直接转为整型和间接转会有不同结果????

[解决办法]
X1=Y/0.01,当Y=0.06时,Y/0.01运算的结果由于精度误差,不正好是6,而是5.9999...,赋给整形数时,丢弃小数部分,所以X1就得到5.
这种转换一般可以这样做:

X1=Y/0.01+0.1;

热点排行