2012-09-04 50 views
4

我注意到的代碼塊下面我維持/延伸:可導致一些奇比較行爲具有> =與(>或==)比較浮點

float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; 
if (systemVersion > 3.2 || systemVersion == 3.2) { 
    //Stuff 
} 

我知道浮點由於精確性,但上述行爲有什麼不同於下面的代碼塊?

float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; 
if (systemVersion >= 3.2) { 
    //Stuff 
} 
+0

即使你將NaN和無窮大扔在它上面,它似乎也是一樣的。 :) – Mysticial

+2

請告訴我,你不必處理存儲版本號作爲浮動的代碼... :-( –

+0

@MarkDickinson它看起來像版本號存儲爲NSString,這之前我有人決定變成一個浮動(破壞次要版本號)...當我通過代碼我希望改變它匹配[這個答案](http://stackoverflow.com/a/5337804/264775),但我'毫不猶豫地在我正在工作的部分之外改變這種情況。 – thegrinner

回答

2

這是一回事。在許多編譯器中,最終的機器指令完全相同(儘管我不能肯定地說clang是這樣的)。

1

不,它不會。我認爲這個代碼是偶然發生的(可能經過一些小的調整)。