2014-07-16 2 views
1

플로트 위도를 가지고 있으며 소수 부분의 정확한 6 자리를 원합니다. 내가 NSNumber의 float float에 NaN이 있습니다.

NSNumber * nLatitude = @(round(latitude*1e6)/1e6); 
NSLog(@"%f %@", latitude, nLatitude); 

때때로 내가 바로 결과를 가지고 수행 할 때

48.8281686092 nan 

누구나 아이디어가있다 : I가 NaN있어

48.8282641210 48.828264 

다른 시간을?


답장을 보내 주셔서 감사합니다. 실제로 NSNumberFormatter는 문제를 해결하고 문제의 근원을 찾고 싶습니다. 숫자를 반올림하면 디스크 공간을 절약하고 더 쉽게 읽을 수 있습니다. 많은 양의 로깅을위한 것입니다.

내가 추적을 가지고 있고 내가 시뮬레이터에 위치의 변화를 시뮬레이션 :

는 여기에 몇 가지 자세한 내용입니다. 위치는 타이머가있는 FakeLocationManager에서 전송됩니다.

- (void)locationManager:(FakeLocationManager *)manager didUpdateLocation:(CLLocation *)location{ 
    // Here the code I round floats 
} 

때때로 반복 위치가 전송되는, 첫 번째 사람이 제대로 작동 후 동일한 위치는 NaN이 밝혀졌다. 그 원인이 타이머 일 수 있다고 생각됩니다.

+0

:

나는 문제가 [NSString stringWithFormat:]는 부동 소수점 값의 소수 자릿수를 지정하는 데 사용할 수있는 경우 프리젠 테이션 중 하나입니다 의심 1000000 대신에'1e6'을 할 수 있습니다. 왜냐하면 그렇게 쉽게 읽을 수 있기 때문입니다. – Milo

+0

어떻게 다른 시간을 의미합니까? 다른 _ 시간은 무엇입니까? 코드가 드라마 - 퀸처럼 작동하지 않기 때문에 뭔가 다른 _ times_이어야합니다 ... – holex

+0

오류를 재현 할 수 없습니다. – Milo

답변

3

부동 소수점 값의 소수 자릿수를 신경 쓸 필요가 거의 없습니다. 그냥 주석으로

_myLabel.text = [NSString stringWithFormat:@"%.6f", [nLatitude doubleValue]]; 
//           ^^^^ 
0

사용이 [NSString stringwithFormat:@"%.4f",[nLatitude floatValue]];