我',嘗試這個簡單的代碼。它示出了第一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