比较4个浮点值以获得最高值

时间:2011-08-17 16:25:52

标签: iphone objective-c floating-point compare

在比较目标c中的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和statement检查> =值..

我可以编写自己的代码来比较使用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"

这么简单的解决方法,很棒!

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分: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 Dave