2011-08-17 54 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