在比较目标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"
这么简单的解决方法,很棒!
答案 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