У меня есть следующий код:Странный результат поведения, если-заявление
- (NSArray *)checkNormalGameDuelAndMatch:(float)nrDuelQs andNrQPerDuel:(float)nrQPerDuel andNrMatchQ:(float)nrMatchQ andActivePlayer:(float)actPlayerNrQ andInactivePlayer:(float)inactivePlayerNrQ {
NSLog(@"checkNormalGameDuelAndMatch:");
// Check for Matches and Duels to prep for swaps and/or match endings
NSArray *theCheckArray = [[NSArray alloc]init];
NSLog(@"nrDuelQs: %.0f/nrQPerDuel: %.0f", nrDuelQs, nrQPerDuel);
// Check if Match still on
NSLog(@"actPlayerNrQ: %.0f/inactivePlayerNrQ: %.0f/nrMatchQ: %.0f", actPlayerNrQ, inactivePlayerNrQ, nrMatchQ);
if (actPlayerNrQ < nrMatchQ && inactivePlayerNrQ < nrMatchQ) {
// Match is still on
_isMatchStillOn = YES;
// Check if Duel is till on
if (nrDuelQs < nrQPerDuel) {
// Duel is still on
_isDuelStillOn = YES;
NSLog(@"_isDuelStillOn = YES;");
}
else {
_isDuelStillOn = NO;
NSLog(@"_isDuelStillOn = NO;");
}
}
else {
//==MATCH IS OVER==//
_isMatchStillOn = NO;
NSLog(@"MATCH OFF");
}
theCheckArray = @[[NSNumber numberWithBool:_isDuelStillOn], [NSNumber numberWithBool:_isMatchStillOn]];
return theCheckArray;
}
следующие выходные NSLog, в течение двух циклов:
checkNormalGameDuelAndMatch:
nrDuelQs: 4/nrQPerDuel: 5
actPlayerNrQ: 4/inactivePlayerNrQ: 0/nrMatchQ: 5
_isDuelStillOn = YES;
checkNormalGameDuelAndMatch:
nrDuelQs: 5/nrQPerDuel: 5
actPlayerNrQ: 5/inactivePlayerNrQ: 0/nrMatchQ: 5
MATCH OFF
Я предполагаю, что есть что-то не так с If-заявление и "& &", так как я не ожидаю "MATCH OFF", когда он появится.
Я думаю, что я слепой, так как это не должно быть сложно.
http://stackoverflow.com/questions/10334688/how-dangerous -is-it-to-compare-floating-point-values –
попытаться преобразовать float в int и затем сравнить. как я чувствую, что вы не беспокоитесь о десятичных точках –
Почему это неожиданно? Второй набор журналов говорит, что 'actPlayerNrQ