2011-08-17 49 views
1

比较目标c中的4个浮点值时遇到问题,我想返回这4个整数的最高值或相等值。正如你可以看到两个在这里一样。比较最高值的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语句和太还检查> =值..

我能够编写我自己的代码来比较使用algorythm的值,但我想检查是否有更简单的方法来做到这一点,并节省我一些头痛?

也许创造一个真正的高价值的浮动,然后比较哪一个是最接近它?

我曾尝试阅读this site和它只是困惑我

我是一种新的客观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" 

这样一个简单的方法来解决它,辉煌!

回答

6

似乎很简单,我只是鸟巢最大通话:

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; 
    } 
} 
+0

嗨大脑,感谢您的快速回复,我从来没有使用嵌套之前调用,我怎样才能输出MAX的结果(1,MAX(2,MAX(3,4)));到NSLOG ??非常感谢 – beej

+0

beej:float max = MAX(1 ....); NSLog(“Max是%f”,max); – brain

+0

Max是9.000000 ....聪明你明明是! 非常感谢! '代码 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是9.000000 float max = MAX(1,MAX(2,MAX ))); NSLog(@“Max is%f”,max); ' Cheers - Beej – beej

1

你的意思是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戴夫

+0

嗨Beej,MAX是返回结果的宏。在我的答案中加入了更多的例子。 –

+0

非常感谢戴夫,这帮助我了解更多! 没有等值的概念,基本上意味着它会返回他们两个,只是一点腿工作我身边比较他们然后:) -Beej – beej