百思不得其解,还请高手指点迷津
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;