我很尴尬地问这个,但我正在运行iOS 6.1,以下行返回False:
if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.1)
但是以下内容返回True:
if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.1f)
为什么?
答案 0 :(得分:1)
在比较之前浮动物被施加到双打。 f表示小数位数。您在更改小数位数时比较两个不同的数字
答案 1 :(得分:1)
在第一个中,systemVersion从float转换为double,其值取决于您用来表示它的位数
在第二个中你要比较两个花车
答案 2 :(得分:0)
经过一番阅读后,我对其原因的理解如下:
•C将1.2之类的数字视为double,如果使用f修改为1.2f作为浮动 •系统内部既没有双精度也没有浮点数,精度为100% •浮点数的表示错误高于双打的表示错误
因此将浮点数与双精度数进行比较将导致误导结果。对于非关键系统,比较2个浮点就足够了。