Estoy tratando de hacer algunas comparaciones de números y obtengo algunos resultados raros.NSNumber comparar: devolver resultados diferentes
NSNumber* number1 = [NSNumber numberWithFloat:1.004];
NSNumber* number2 = [NSNumber numberWithDouble:1.004];
([number1 compare:number2] == NSOrderedSame) ? NSLog(@"YES") : NSLog(@"NO");
([number1 compare:number2] == NSOrderedAscending) ? NSLog(@"YES") : NSLog(@"NO");
([number1 doubleValue] == [number2 doubleValue]) ? NSLog(@"YES") : NSLog(@"NO");
([number1 floatValue] == [number2 floatValue]) ? NSLog(@"YES") : NSLog(@"NO");
salida del registro:
NO
SÍ NO
SÍ
Esto es muy frustrante para mí. Sé que esto es probablemente porque la diferencia entre el número de bits en un flotante en comparación con un doble. Me parece que está truncando el doble hacia abajo para hacer una comparación. Pero si no sé cómo se crea el número, ¿cómo obtengo los resultados correctos? ¿Hay alguna manera diferente de comparar NSNumber?
¿Qué pasa si se utiliza '[número1 isEqualToNumber: number2] ', esa es la forma preferida, al menos si solo estás tratando de determinar la igualdad de valores? – twilson
Lo siento Twilson, que todavía devuelve NO. Los números SON diferentes. – picciano