由于浮点数伴随着无法精确表示而进行近似或舍入,处理器是32位还是64位都会导致浮点数值不一样,所以浮点数不能够使用 == 来判断两个浮点数是否相等。
浮点数比较应该通过fabs方法算出两个浮点数间的绝对值,再判断是否在设定的精确度范围内,如果在,则表示相等,否则不相等。
如:
if(fabs(a-b)< 精确度){
}
精确度可以自己设定,设:0.0001;也可以使用oc中的宏(FLT_EPSILON)
备注:
1、FLT_EPSILON用于float类型。它是满足 x+1.0不等于1.0的最小的正数。
2、DBL_EPSILON用于double类型。
3、abs 方法用于整型间的绝对值。