我写了一段代码,遇到了一个非常奇怪的问题。NO
即使实际比较为真,两个浮点数之间的比较也会返回。我什至通过比较来使用安全浮点比较FLT_EPSILON
。这是代码:
//To start the process run this:
[self increment:0.0f];
- (void)increment:(float)f {
f += 0.02f;
if ((fabs(f - 1.0f) < FLT_EPSILON)) {
NSLog(@"STOP");
}
else {
NSLog(@"F %f", f);
[self increment:f];
}
}
并且比较总是会失败,并且代码会进入无限循环。我已经在 iOS 7 上的 32 位设备和 iOS 8 上的 iPhone 5S 模拟器上对此进行了测试。