私はコードを書き、本当に奇妙な問題に遭遇しました。2 つの float 間NO
の比較は、実際の比較が true の場合でも返されます。と比較して、安全な浮動小数点比較も使用しました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 シミュレーターでこれをテストしました。