检查NSTimeInterval是否等于0

时间:2011-02-09 17:23:50

标签: iphone objective-c

//Gets the time right now
NSDate *now = [NSDate date];

//Stores the difference in seconds between when the test was started and now.
NSTimeInterval interval = [self.expires timeIntervalSinceDate:now];

if (interval == 0) {
    ...
}

条件不正确的原因是什么?

感谢。

1 个答案:

答案 0 :(得分:6)

由于NSTimeInterval只是double,因此您可能会出现浮点舍入错误。尝试使用

之类的东西
if (abs(interval) < EPS) {

其中EPS是一个足够小的常数。

或者,如果你想知道秒而不是毫秒,你可以将那个双截断为int。

但从您的代码判断,我认为您可能想要检查时间轴是否已经已过期,而不是它在此时间到期。后者的概率非常小。这应该可以解决问题。

if (interval < 0) {