我',尝试这个简单的代码。它示出了第一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;
}
二是双变量,但我将其设置为(浮点)我,所以它应该是等于DF,但不是这样。
例如,数16777217被表示为16777216˚F和DF,但二仍然是16777217,忽略(浮点)铸造。
这怎么可能?
**我用这:海湾合作委员会(Ubuntu的4.4.3-4ubuntu5)4.4.3
什么平台和编译器版本? – sarnold 2012-03-26 22:27:29
为什么你使用这样的逗号运算符?绝对没有必要,并增加了不必要的复杂问题。 – Joe 2012-03-26 22:28:10
你不需要说'%lf'。只是'%f'很好,而且它意味着'double'。 – 2012-03-26 22:29:40