3 回答

TA貢獻1817條經(jīng)驗 獲得超6個贊
int main(){ float a = 0.7, b = 0.5; // These are FLOATS if(a < .7) // This is a DOUBLE { if(b < .5) // This is a DOUBLE printf("2 are right"); else printf("1 is right"); } else printf("0 are right");}
0.5 < 0.5
變化 float
到 double
,或: 變化 .7
和 .5
到 .7f
和 .5f
,

TA貢獻1811條經(jīng)驗 獲得超6個贊
double
float
5
0 is right
main(){ float a=0.25,b=0.5; if(a<.25) { if(b<.5) printf("2 are right"); else printf("1 is right"); }elseprintf("0 are right");}
0 are right
ieee浮點數(shù)和雙格式的設(shè)計使得這些數(shù)字是“按字典順序排列的”,用ieee Architect william kahan的話來說,意思是“如果兩個相同格式的浮點數(shù)字被排序(例如x<y),那么當(dāng)它們的位被重新解釋為符號大小整數(shù)時,它們的排序方式是相同的?!?/trans>
這意味著,如果我們在內(nèi)存中使用兩個浮點數(shù),將它們的位模式解釋為整數(shù),并將它們進行比較,我們就可以判斷哪個更大,而無需進行浮點比較。在C/C+語言中,這種比較如下所示:
if (*(int*)&f1 < *(int*)&f2)
這種迷人的語法意味著獲取F1的地址,將其視為整數(shù)指針,并取消對它的引用。所有這些指針操作看起來都很昂貴,但是它們基本上都是抵消掉的,只是意味著‘把F1當(dāng)作一個整數(shù)’。由于我們對f2應(yīng)用相同的語法,整行的意思是‘比較f1和f2,使用它們的內(nèi)存中表示形式解釋為整數(shù)而不是浮點數(shù)’。

TA貢獻2065條經(jīng)驗 獲得超14個贊
0.5= 0.1
0.7=0.10110011001100
- 3 回答
- 0 關(guān)注
- 441 瀏覽
添加回答
舉報