我有一個非常基本的問題。我想知道這是Objective-C或C中的內置函數,以幫助我找到一個特定的數字是否在一定範圍內。我知道這可能是一個簡單的問題,但我仍然沒有找到答案。簡而言之,希望避免在此測試中使用多個「if」和「else」。如何使用Objective-C測試數字是否在範圍內?
回答
NSLocationInRange(c, NSMakeRange(a, (b - a)))
這會返回一個BOOL如果C位於內a和b。然而,a,b和c必須是無符號整型。這真的不是很好看。所以我想比較自己會好得多。
c >= a && c <= b
使用C,C++,Java和C#做同樣的方式...
if (theNumber >= SOME_MINIMUM_VALUE && theNumber <= SOME_MAXIMUM_VALUE)
{
// ...
}
這是一個 「包容性」 範圍檢查。應該很容易弄清楚如何做一個「獨家」檢查。
沒有內置功能,但也沒有辦法做到這一點,比任何我熟悉的架構上的兩個條件更有效率。任何函數或宏將最終歸結爲與上述相同。
如果你擔心會變慢,那麼不要。如果你真的看到這是一個瓶頸,只擔心表現。過早優化不值得你花時間。
+1對於「過早優化不值得你花時間」 – aslisabanci 2011-03-07 17:41:26
我正在尋找像'if(x in range){}'這樣的範圍「,它是某種允許語句返回YES的結構,如果它的值在range.startInterval和range.endInterval之間。我不知道這樣的東西是否存在,但我認爲它值得問:) – 2011-03-07 17:42:57
如果你真的想要,你可以使用'NSRange'和'NSLocationInRange()',但是在一天結束時,它只是圍繞着大於和小於檢查。沒有內置的'in'運算符或類似的東西。 – 2011-03-07 17:44:41
嗯,我不認爲有內置函數,但你可以在幾秒鐘內寫出你自己的函數。
簡單
return (theInt >= min && theInt <= max);
添加這個方法:
- (BOOL)float:(float)aFloat between:(float)minValue and:(float)maxValue {
if (aFloat >= minValue && aFloat <= maxValue) {
return YES;
} else {
return NO;
}
}
而且使用這樣的:
float myFloat = 3.45;
if ([self float:myFloat between:3 and:4]) {
//Do something
}
這是一個非常簡單的解決方案。
只需要寫返回值(aFloat> = minValue && aFloat <= maxValue) -其他。 – taskinoor 2011-03-07 17:52:08
不知道,我可以直接做到這一點。謝謝。 – 2011-03-07 17:55:47
否則,像這樣將被解釋爲:C> = A & &ç< b
NSLocationInRange(c, NSMakeRange(a, (b - a)))
如果你想比較像這樣:C> = A & &ç< = B 你應該這樣做像這樣:
NSLocationInRange(c, NSMakeRange(a, (b - a) + 1))
NSRange是這樣的結構:
{
location, // Starting point
length // Length from starting point to end range
}
所以如果你想從5到15範圍內包括-----> NSMakeRange(5,11);
*如果您有點不安,請用手指從5點到15點進行計數;)。這時候,我得到了這一點的夜晚時,其很難想象我是怎麼做:P
如果您正在使用簽名的INT的工作,我建議你創建宏)
#define MY_AWESOME_MACRO_COMPARE(c, a, b) ((c >= a) && (c <= b))
希望我幫助:)
乾杯;)!
在Objective-C,你可以使用這個簡單的檢查:
if (variable >= MINVALUE && variable <= MAXVALUE) {
NSLog(@" the number fits between two numbers");
} else {
NSLog(@" the number not fits between two numbers");
}
BOOL FitsBetweenTwoNumber = NSLocationInRange(variable, NSMakeRange(MINVALUE, (MAXVALUE - MINVALUE)));
if (FitsBetweenTwoNumber) {
NSLog(@" the number fits between two numbers");
} else {
NSLog(@" the number not fits between two numbers");
}
你可以使用NSPredicate來判斷一個數組是否在範圍內,如果使用CoreData不喜歡:
NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", MINVALUE, MAXVALUE];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:context]];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
if (error == nil) {
if(results.count >0) {
NSLog(@" the number fits between two numbers");
} else {
NSLog(@" the number not fits between two numbers");
}
} else if (error) {
NSLog(@"%@", error);
}
如果你不用coreData,你也可以用NSPredicate:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date <= %@)", MINVALUE, MAXVALUE];
NSArray *results = [@[@(variable)] filteredArrayUsingPredicate:predicate];
if(results.count >0) {
NSLog(@" the number fits between two numbers");
} else {
NSLog(@" the number not fits between two numbers");
}
- 1. 如何測試數字是否在特定範圍內?
- 2. 如何測試變量是否在一定範圍內?
- 3. 整數Python測試是否是在一定範圍內
- 4. 如何測試無符號__int64數字是否超出範圍
- 5. 如何檢測對象是否在「使用」範圍內?
- 6. 如何在C#中使用TextBox時測試Integer是否在範圍內
- 7. yii檢測範圍是否在使用
- 8. 如何檢查數字是否在給定範圍內?
- 9. 如何檢查數字是否在一定範圍內?
- 10. 如何檢查數字是否在一個範圍內?
- 11. 測試以查看IP是否在一個範圍內
- 12. 測試Android應用程序是否可在全球範圍內使用
- 13. 使用網格點來檢測對象是否在範圍內
- 14. 如何使用try/catch檢查數字是否在1-3的範圍內? c#
- 15. 測試函數是否在scala中給定的範圍內調用
- 16. 如何測試兩個日期是否在NUnit的某個容差範圍內?
- 17. 測試範圍在JavaScript中的函數的範圍內的虛擬範圍
- 18. 如何測試mongoid範圍?
- 19. 檢測整數是否在多個有效整數範圍內
- 20. 是否可以使用egrep來匹配範圍內的數字?
- 21. 即使調試顯示它在範圍內,索引是否超出範圍?
- 22. 如何測試兩個時間範圍是否重疊?
- 23. STL函數來測試一個值是否在某個範圍內?
- 24. R:查找數字是否在字符串範圍內
- 25. 確定值是否在範圍內,使用模數
- 26. 如何使用Progress 4GL測試字符串是否數字
- 27. 如何檢測用戶是否在註釋的範圍
- 28. 如何比較兩個數字是否在MFC(VC++)的任何範圍內?
- 29. 是否有一個標準函數來檢查數字是否在範圍內?
- 30. 使用Google測試期望值在給定範圍內
謝謝,這是我需要的。 (NSRange) – 2011-03-07 18:03:49
這是不完全正確的,被這個宏所壓制的代碼是 c> = a && c TtheTank 2015-10-07 11:01:52