2013-03-20 3 views
1

У меня проблема с кодом Objective-C. Я хотел бы иметь инструкцию if в формуле, в которой говорится, что условие проверяется так, как если бы float был равен одному из других 5, которые я определил. Но короче и проще:Выполнение нескольких сравнений эффективно

if (float1 == float5 || float1 == float2 || float1 == float3 || float1 == float11) 
{ 
     //something to do 
} 

Благодарим вас за ответы.

+2

Никогда не сравнивайте поплавка с значением int –

+1

Это полностью не связано с Xcode. У вас проблемы с C (не более Objective-C), IDE вообще не имеет никакого отношения к вашему коду **. – 2013-03-20 12:45:54

+0

@AnoopVaidya: Никогда не говорите никогда, если вы не понимаете, что вы говорите. Некритично поглаживая эту «общую мудрость», никто не помогает. –

ответ

0

Предполагая, что вы можете гарантировать, что поплавок является целое число, либо по определению или применения roundf(), floorf(), ceilf(), это одно из возможных решений:

const NSUInteger LENGTH = 7; 
float myNumbersToCheck[LENGTH] = {1,13,6,8,99,126,459674598}; 
for (NSUInteger index = 0; index < LENGTH; index++) { 
    if (float1 == myNumbersToCheck[index]) { 
    // do something 
    break; 
    } 
} 
+0

Спасибо, но я изменил свой вопрос. Я хочу сравнить float и float – user2187565

+0

Что такое проблема с float myNumbersToCheck [LENGTH] = {float1, float2, float3, float11}?! –

+1

@ user2187565: Вы можете просто заполнить массив 'myNumbersToCheck' со значениями, которые вы хотите сравнить. Однако, чтобы сравнить с несколькими произвольными значениями, нет никаких оснований не просто выписывать сравнения. Ничто другое не будет значительно более ясным или более эффективным. Если было больше чисел или были шаблоном или определенными ограничениями на числа, могли бы быть и другие решения, такие как использование двоичного поиска или поиск результата в массиве (эффективно) логических значений. Но за несколько цифр не переусердствуйте; просто напишите код. –

Смежные вопросы