Myślę, że zwariuję. "counter" i "interval" są podwójne. Dzieje się to na akcelerometrze: didAccelerate w przedziale (.01). "licznik" powinien ostatecznie zwiększyć się do "przedziału". Z jakiegoś powodu nie mogę uzyskać tego "jeśli", aby zadzwonić prawdę.iphone/Cel C - Porównanie debla nie działa
Czy coś przeoczyłem?
double interval = .5;
if(counter == interval){ //should eventually be .50000 == .50000
NSLog(@"Hit!");
[self playSound];
counter = 0;
}else{
counter += .01;
}
NSLog(@"%f, %f, %d",counter,interval,(counter == interval));
możliwy duplikat [Trouble with Float w Objective-c \ [SOLVED \]] (http://stackoverflow.com/questions/1193554/trouble-with-float-inobjective-c- solve) – Seth
Tak, okazuje się być po prostu tym. Choć wydaje się, że jest to odwrotny problem, użyłem typu float i zadziałało. Dzięki Seth – azeven
Nie powinieneś polegać na float/double. Użycie funkcji float może rozwiązać ten problem, ale spowoduje jego uszkodzenie w innej sytuacji. Spróbuj wymyślić lepsze rozwiązania. Używanie> = zamiast == może rozwiązać w wielu przypadkach. – taskinoor