2016-10-02 34 views
0

このロジックを達成する方法がわかりません。objective-cでほぼ等しい演算子を使用するにはどうすればよいですか?

Iは数字の配列た:

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

これらの数値は0.5

の差が増大し、Iは、結果番号 'X' を有しています。

配列のどの数字が「x」に近いかを調べたいと思います。

どの算術演算子を使用しますか?はるかに少ない< <?またはほぼ等しい~~演算子、目的関数-c?

xcodeに(x<<y)を入力できますが、できません。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

私はアプリのためにやっています。私は客観的なものです。もしそうでないなら、これを行う上で最善の方法を提案してください。 –

答えて

3

Objective-C(またはC)にはこのような演算子はありません。あなたはあなた自身のチェックをする必要があります。配列内の各数値は次の値から0.5であるため、チェックする数値は配列の+/- 0.25の値に最も近いことがわかります。あなたはxが75.5未満-0.5以上であれば少し余分なロジックを追加する必要があります

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; 
    } 
} 

:おそらくこのような

何か。

関連する問題