2016-10-02 82 views
0

我不知道如何做到这一逻辑。如何在objective-c中使用近似相等的运算符?

我有编号的数组:

num = @ [0,0.5,1,1.5,2...,12.5,13,13.5,14,14.5,15,15.5.....75]; 

这些数值是采用的0.5

的差增加,我有一个结果数“X”。

我想知道数组中的哪个数字与'x'的近似匹配。

我应该使用哪一个数学运算符?更少< <?或在objective-c中近似相等~~运算符?

我可以做,如果(x<<y) xcode但我不能做x ~~ y

目前我使用的here建议通过以下方式:

static bool CloseEnoughForMe(double value1, double value2, double acceptableDifference) 
{ 
    return fabs(value1 - value2) <= acceptableDifference; 
} 

是否有任何的Objective-C提供了更简单的方法?

+0

你在说Objective-C++吗?您不能在Objective-C中重新定义运算符。 “<<”是位移,不是“少得多”。 –

+0

我正在做一个应用程序。我是为了objective-c。如果不是,请建议我这样做的最佳方式。 –

回答

3

Objective-C(或C)中没有这样的操作符。你将不得不做你自己的检查。由于数组中的每个数字都是下一个值的0.5,因此您知道要检查的数字将最接近数组+/- 0.25中的值。

像这样的东西可能:

double x = ... // The number to check 
NSArray *numbers = @[ @0, @0.5, @1, @1.5, ..., 75 ]; // Your array of numbers 
for (NSNumber *number in numbers) { 
    if (x >= [number doubleValue] - 0.25 || x < [number doubleValue] + 0.25) { 
     NSLog(@"%f is closest to %@", x, number); 
     break; 
    } 
} 

你需要添加一些额外的逻辑,如果x大于75.5小于-0.5或更大。