Сравните 4 значения с плавающей запятой для наибольшего значения - PullRequest
1 голос
/ 17 августа 2011

Имея проблемы со сравнением 4-х значений с плавающей точкой в ​​цели c, я хотел бы вернуть самые высокие или равные значения этих 4-х целых чисел.Как видите, здесь два одинаковых.

Это вывод NSLOG

2011-08-17 17:17:30.328 [21087:c203] 1 = 6.000000
2011-08-17 17:17:30.328 [21087:c203] 2 = 4.400000
2011-08-17 17:17:30.352 [21087:c203] 3 = 0.000000
2011-08-17 17:17:30.353 [21087:c203] 4 = 6.000000

Допустим, 1-4

Я пробовал MAX (1,2) Заявление Также проверено> = значение с использованием операторов if и. ..

Я могу написать свой собственный код для сравнения значений с использованием алгоритма, но я хотел проверить, есть ли более простой способ сделатьэто и избавило меня от головной боли ??

Возможно, создать float с действительно высоким значением и затем сравнить, какой из них был ближе к нему ??

Я пытался прочитать этот сайт, и это просто сбивает меня с толку

Я новичок в цели c, сделал это в течение 2 лет, но все же иногда это ставит тебя в тупик !!

Редактировать - Решено мозгом !..

2011-08-18 12:10:26.798 iT[2093:c203] 1 = 6.710000 
2011-08-18 12:10:26.798 iT[2093:c203] 2 = 0.000000 
2011-08-18 12:10:26.799 iT[2093:c203] 3 = 7.000000 
2011-08-18 12:10:26.800 iT[2093:c203] 4 is 9.000000 

float max = MAX(1,MAX(2,MAX(3,4))); NSLog(@"Max is %f", max); 

NSLog Output "Max is 9.000000"

Такой простой способ решить, Бриллиант!

Ответы [ 2 ]

6 голосов
/ 17 августа 2011

Мне кажется, просто вкладывать максимальное количество вызовов:

max(1,max(2,max(3,4)))

Где 1,2,3,4 относятся к именам переменных.

Обычно такого рода действия выполняются над коллекциями, и в этом случае вы можете сделать что-то вроде этого (в псевдокоде):

float max = Float.Min_Value;
for (float f in float_array) {
    if (f > max) {
        max = f;
    }
}
1 голос
/ 17 августа 2011

Вы имеете в виду MAX(MAX(6.0000,4.0000),MAX(0.0000,6.00000))?это должно вернуть 6.0000.

РЕДАКТИРОВАТЬ - некоторые примеры:

int i = MAX(1,2);

в этом случае я бы установил на 2.

int j = MAX(MAX(1,2),MAX(3,3));

Это просто вложение функций, поэтому будет равно:

MAX(2,3);

и j будет установлено на 3. Как вы можете видеть, нет понятия равных значений.

HTH Dave

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...