我,尝试这个简单的代码。它显示了前 10 个不能用浮点数表示的整数:
int main(){
int i, cont=0;
float f;
double di, df;
for(i=10000000, f=i; i<INT_MAX; i++, f=i, df=f, di=((float)i)){
if(i!=f){
printf("i=%d f=%.2f df=%.2lf di=%.2lf\n", i, f, df, di);
if(cont++==10) return 0;
}
}
return 1;
}
di是一个双变量,但我将它设置为(float)i,所以它应该等于 df,但事实并非如此。
例如,数字 16777217 由f和df表示为 16777216 ,但di仍然是 16777217,忽略(float)转换。
这怎么可能?
**我正在使用这个:gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3