我正在尝试测试一个数字是否可以被另一个完全整除(无余数)。如果我将它与 int 进行比较,它可以正常工作:
NSTimeInterval timeElapsed = // a double goes here
// round to 3 decimal points to avoid floating point weirdness
timeElapsed = [[NSString stringWithFormat:@"%.3f",timeElapsed] doubleValue];
进而
// This works correctly
if (fmod(timeElapsed, 1) == 0) {
NSLog(@"is divisible");
}
但是如果我将它与小数进行比较,它会失败,只是间歇性地触发:
// This does NOT work correctly
if (fmod(timeElapsed, .1) == 0) {
NSLog(@"is divisible");
}
我究竟做错了什么?
编辑:在阅读了下面的答案和精彩评论后,我得出的结论是,这整个方法是一个坏主意。无法保证能够生成特定的时间间隔。最好只创建单独的计时器而不是听一个“主”计时器。