Tengo una pregunta muy básica. Me gustaría saber si aquí hay una función incorporada en Objective-C o C para ayudarme a encontrar si un número específico está en un cierto rango. Sé que esta es probablemente una pregunta fácil, pero aún así no encontré una respuesta. En términos cortos, me gustaría evitar el uso de múltiples "si" y "otros" para esta prueba.¿Cómo se prueba para ver si el número está dentro del rango usando Objective-C?
Respuesta
NSLocationInRange(c, NSMakeRange(a, (b - a)))
Esto devuelve una BOOL si c se encuentra dentro de a y b. Sin embargo, a, byc deben estar sin firmar int. Y esto realmente no es muy guapo. Así que supongo que es mucho mejor compararme a mí mismo.
c >= a && c <= b
misma manera que en C, C++, Java, C# ...
if (theNumber >= SOME_MINIMUM_VALUE && theNumber <= SOME_MAXIMUM_VALUE)
{
// ...
}
Esa es una prueba de alcance "inclusivo". Debería ser fácil descubrir cómo hacer un control "exclusivo".
No hay una función incorporada, pero tampoco hay manera de hacerlo que sea más eficiente que dos condiciones en cualquier arquitectura con la que estoy familiarizado. Cualquier función o macro finalmente se reducirá a lo mismo que arriba.
Si le preocupa que sea lento, entonces no. Solo preocúpate por el rendimiento si realmente ves que esto es, de alguna manera, un cuello de botella. La optimización prematura no vale su tiempo.
+1 para "optimización prematura no vale la pena su tiempo" – aslisabanci
Estaba buscando algo como 'if (x en rango) {}' donde "rango" es algún tipo de estructura que permite que la instrucción devuelva SÍ si el valor está entre range.startInterval y range.endInterval, por ejemplo. No sé si existe tal cosa, pero creo que vale la pena preguntar :) –
Podrías usar 'NSRange' y' NSLocationInRange() 'si realmente quisieras, pero al final del día, es solo envoltorios alrededor de un mayor que y menor que el cheque. No hay un operador 'in' integrado ni nada similar. –
Bueno, no creo que haya una función incorporada, pero podrías escribir la tuya en segundos.
simplemente
return (theInt >= min && theInt <= max);
Añadir este método:
- (BOOL)float:(float)aFloat between:(float)minValue and:(float)maxValue {
if (aFloat >= minValue && aFloat <= maxValue) {
return YES;
} else {
return NO;
}
}
y utilizarlo como esto:
float myFloat = 3.45;
if ([self float:myFloat between:3 and:4]) {
//Do something
}
Esta es una solución muy fácil.
Bastará con escribir return (aFloat> = minValue && aFloat <= maxValue) sin el si -más. – taskinoor
No sabía, que puedo hacer esto directamente. Gracias. –
Haciendo como tal será interpretado como: c> = a & & c < b
NSLocationInRange(c, NSMakeRange(a, (b - a)))
Si desea comparar la siguiente manera: c> = a & & c < = b que debe hacer así:
NSLocationInRange(c, NSMakeRange(a, (b - a) + 1))
NSRange es una estructura:
{
location, // Starting point
length // Length from starting point to end range
}
Así que si quiere un rango de 5 a 15 incluido -----> NSMakeRange (5, 11);
* Si te molesta un poco, solo cuenta con tu dedo del 5 al 15;).Así es como lo hago cuando llego a este punto de la noche cuando su difícil pensar: p
Si está trabajando con int firmado, le aconsejo que para crear una macro;)
#define MY_AWESOME_MACRO_COMPARE(c, a, b) ((c >= a) && (c <= b))
esperanza I ayudado :)
¡Salud!)!
En Objective-C puede utilizar esta sencilla prueba:
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");
}
puede utilizar NSPredicate para juzgar si una matriz es en el rango, si se utiliza CoreData me gusta:
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);
}
si no utiliza coreData, también puede usar 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. prueba si el número está dentro del intervalo circular
- 2. ¿Generar un número aleatorio dentro del rango?
- 3. Calcular si una coordenada está dentro del rango de otra
- 4. ¿Determinando si una variable está dentro del rango?
- 5. Prueba de tiempo de ejecución de MonoTouch para ver si se está ejecutando en el simulador
- 6. Valor no está dentro del rango esperado
- 7. Comprueba si la fecha está dentro del rango de tiempo usando Joda o standart Java API
- 8. Prueba VBA si la celda está en un rango
- 9. ClickOnce: el valor no está dentro del rango esperado
- 10. ¿Generar un número aleatorio dentro del rango en iOS?
- 11. Generando un número aleatorio excluyendo el rango
- 12. ¿Cómo comprobar si la hora actual está dentro del rango en python?
- 13. Bit twiddling para comprobar si un número está en el rango particular
- 14. En una prueba de unidad de Java, ¿cómo afirmo que un número está dentro de un rango determinado?
- 15. ¿Cómo redondear un número dentro de un cierto rango?
- 16. código más cortas para comprobar si un número está en un rango de JavaScript
- 17. ¿Cómo puedo determinar si un personaje está dentro de un rango en Clojure?
- 18. Prueba si el objeto WP_Query está vacío
- 19. A ver si el archivo está vacío
- 20. ¿Cómo se script de restricción de SQL para un número dentro de un rango?
- 21. ¿Cómo se prueba para ver si existe una variable en una estructura de ColdFusion?
- 22. ¿Cómo verificar si un número está incluido en un rango (en una declaración)?
- 23. ¿Cómo verificar si una fecha está en un rango determinado?
- 24. El xyz literal del tipo int está fuera del rango
- 25. Produce un número aleatorio en un rango usando C#
- 26. ¿Cómo encontrar si un NSDate está dentro de un rango específico?
- 27. Número aleatorio en el rango [min - max] usando PHP
- 28. ¿Cómo se prueba si existen dos archivos?
- 29. /Postgres error: número entero fuera del rango
- 30. Compruebe si la dirección IP está en el rango privado
Gracias, esto era lo que necesitaba. (NSRange) –
esto no es completamente correcto, el código reprimido por esta macro es c> = a && c TtheTank