2016-10-02 53 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或更大。