Я пытаюсь проверить, является ли число чисто делимым (без остатков) другим. Если сравнивать его против междунар, он работает правильно:Как проверить, является ли double с десятичными знаками делимыми?
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");
}
Но если сравнить его с десятичной, он терпит неудачу, выпустив только intermittedly:
// This does NOT work correctly
if (fmod(timeElapsed, .1) == 0) {
NSLog(@"is divisible");
}
Что я делаю неправильно?
EDIT: После прочтения ответа и замечательных комментариев ниже я пришел к выводу, что весь этот подход - плохая идея. Нет никакой гарантии, что вы сможете создавать определенные временные интервалы. Вероятно, лучше просто создать отдельные таймеры вместо того, чтобы слушать один «главный» таймер.
Что именно не подходит для вас? – giorashc
@giorashc Если, например, 'timeElapsed' равно 3.400, он должен пройти тест, потому что он должен быть чисто делимым на' .1'. Но это не так. – zakdances
Пол R имеет очень хороший момент в этом вопросе. Насколько я понимаю, вы пытаетесь сделать что-то каждые 0,1 сек? – giorashc