2012-06-04 4 views
0

은 내가 CLLocationDegrees로 변환 할 필요가 위도/경도 값으로 NSDecimalNumber 변환해야합니다. 나는 - [NSDecimalNumber doubleValue] 메쏘드를 사용했다. 그러나 그 가치는 그 정확성을 잃어 버린다. 나는 값을 동일하게하고 싶다. 다음은 내가 (이 문제에 대해 이미 모든 사람들이 알고있을 것이라는 희망을) 말하고있는 것입니다.정밀도를 잃지 않고 NSDecimalNumber를 CLLocationDegrees로 변환하는 방법은 무엇입니까?

NSString *coordStr = @"-33.890934125621094"; 
NSDecimalNumber *lat = [NSDecimalNumber decimalNumberWithString:coordStr]; 
NSLog(@"%@", lat); // -33.890934125621094 
NSLog(@"%lf", [lat doubleValue]); // -33.890934 

위의 작업을 수행하는 대신 어떤 방법으로해야합니까?

답변

3

doubleValue 방법이 게시물을

NSString *coordStr = @"-33.890934125621094"; 

NSLog(@"%.17g",coordStr.doubleValue); //-33.890934125621094 

확인 문자열을 변환하는 데 사용 해보세요 : How to print a double with full precision on iOS?

편집 : 다큐는 말한다 : typedef double CLLocationDegrees; 그래서 당신이 문제가 아니라 double test = coordStr.doubleValue; 수 있습니다, 그 NSLog 전체 값을 인쇄하지 않습니다. double var은 완전한 값을 저장합니다.

+0

나는 내 대답 – CarlJ

+0

흠을 업데이트했습니다. 좋은. CLLocationDegrees로 변환하는 방법? – EmptyStack

+0

docu는 말합니다 : typedef double CLLocationDegrees; 그래서 당신은 CLLocationDegrees var에 double을 할당 할 수 있습니다. – CarlJ

1

CLLocationDegree는 double입니다. 따라서 최대 정밀도는 double 데이터 유형의 정밀도와 같을 수 있습니다.

관련 문제