일부 숫자 비교를 시도하고 있는데 이상한 결과가 나타납니다.NSNumber 비교 : 다른 결과 반환
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");
로그 출력 :
NO
YES
NO
YES
이 나에게 매우 실망. 아마 float의 비트 수와 double의 비트 수의 차이 때문일 것입니다. 그것은 내게 그것은 double을 float로 잘라서 비교하는 것으로 보인다. 그러나 번호가 어떻게 생성되는지 모르면 올바른 결과를 얻으려면 어떻게해야합니까? NSNumber를 비교하는 다른 방법이 있습니까?
당신이 사용하는 경우에 대한'[번호 1 isEqualToNumber : 숫자 2] ', 그것은 선호되는 방법입니다. 적어도 가치 평등을 확인하려는 경우에만 그렇습니까? – twilson
죄송 twilson, 여전히 NO를 반환합니다. 번호는 다릅니다. – picciano