2016-10-02 2 views
0

Ich bin nicht sicher, wie diese Logik zu erreichen ist.Wie ungefähr gleich Operator in Ziel-c zu verwenden?

Ich habe eine Reihe von Zahlen:

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

Diese Zahlen werden mit einer Differenz von 0,5 erhöht

und ich habe eine Ergebniszahl ‚x‘.

Ich möchte herausfinden, welche Zahl im Array ist die enge Übereinstimmung mit dem 'x'.

Welcher mathematische Operator sollte ich verwenden? viel weniger < <? oder ungefähr gleich ~~ Operator in Ziel-c?

Ich kann tun, wenn (x<<y) in xcode, aber ich kann nicht tun x ~~ y.

Im Moment bin ich mit dem folgenden Weg in here vorgeschlagen:

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

Gibt es eine einfachere Methode, die Objective-C bietet?

+0

Sprechen Sie über Objective-C++? Sie können Operatoren in Objective-C nicht neu definieren. Und '<<' ist Bit-Shift, nicht "viel weniger". –

+0

Ich mache es für eine App. Ich bin für Ziel-c. Wenn nicht, bitte schlagen Sie mir den besten Weg vor, dies zu tun. –

Antwort

3

Es gibt keine solchen Operatoren in Objective-C (oder C). Sie müssen Ihre eigene Überprüfung durchführen. Da jede Zahl in Ihrem Array 0,5 vom nächsten Wert ist, wissen Sie, dass die Nummer, die Sie überprüfen möchten, einem Wert im Array +/- 0,25 am nächsten kommt.

So etwas wie dies vielleicht:

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

Sie benötigen eine wenig zusätzliche Logik hinzufügen, wenn x weniger als -0,5 oder größer als 75,5.

Verwandte Themen