由于浮點(diǎn)數(shù)伴隨著無法精確表示而進(jìn)行近似或舍入,處理器是32位還是64位都會(huì)導(dǎo)致浮點(diǎn)數(shù)值不一樣,所以浮點(diǎn)數(shù)不能夠使用 == 來判斷兩個(gè)浮點(diǎn)數(shù)是否相等。
浮點(diǎn)數(shù)比較應(yīng)該通過fabs方法算出兩個(gè)浮點(diǎn)數(shù)間的絕對(duì)值,再判斷是否在設(shè)定的精確度范圍內(nèi),如果在,則表示相等,否則不相等。
如:
if(fabs(a-b)< 精確度){
}
精確度可以自己設(shè)定,設(shè):0.0001;也可以使用oc中的宏(FLT_EPSILON)
備注:
1、FLT_EPSILON用于float類型。它是滿足 x+1.0不等于1.0的最小的正數(shù)。
2、DBL_EPSILON用于double類型。
3、abs 方法用于整型間的絕對(duì)值。