2012-09-10 4 views
0

문자열을 double 값으로 변환하여 주석의 좌표로 사용하려고합니다.좌표의 두 자리 소수점

지도에 소수점 이하 5 자리를 표시하려면 double 값이 필요합니다.

문자열이 hello이고 필요한 double이 whatsup이라고 가정 해 봅시다.

문자열의 형식은 정확히 내가 원하는 방식이고 이중으로 만들고 싶습니다. 그래서 문자열의 doublevalue 속성을 사용합니다. 이 여분의 제로와 더블 있습니다

coordinate.latitude = whatsup 

:

NSString *hello = @"12.61655"; 
double whatsup = hello.doubleValue; 
NSLog(@"%f",whatsup); //this gives 12.616550 WITH A ZERO in the end 
NSLog(@"%.5f",whatsup); //This gives me the correct value of 12.61655 with only 5 decimal places 

그래서 지금 내가 쓰고 싶은 경우.

어떻게

5 소수 자릿수가 두 배입니다
coordinate.latitude = SOMETHING HERE 

을 쓸 수 있습니까?
어떻게 든 "% .5f"를 구현할 수 있습니까?

numberformatter를 시도했지만 나에게 NSnumber를 제공합니다. double이 필요합니다 :

이 코드를 for 루프에 사용하여 주석 (핀)을 그립니다.

복식으로 동일한 forloop을 사용할 때 잘 동작합니다.

double latitudeFromCSV = [[components objectAtIndex:0] doubleValue]; 
double longitudeFromCSV = [[components objectAtIndex:1] doubleValue]; 
CLLocationCoordinate2D annotationCoord; 
annotationCoord.latitude = latitudeFromCSV; 
annotationCoord.longitude = longitudeFromCSV; 
+0

NSLog (@ "coordinate.latitude = % .5f", whatsup); ' – Till

+0

오 기다리십시오. 앞에 0이없는 이중 값을 저장하고 싶지는 않습니까? –

+0

그래, 마지막에 0이 아닌 double 값을 저장하고 싶습니다 ... 단지 5 개의 소수만 저장하십시오. 그게 가능하니? –

답변

1

체크 아웃있는 NSString 방법 -stringWithFormat:

하지만 좋은 당신이를 제거해야합니다 수 있도록 : 나는 CSV 파일에서 값을 얻기 위해이 코드를 사용할 때, 나는 어떤 핀을 얻을 해달라고 @ "12.50000"과 같은 가치가 없다는 것을 모를 때 앞자리에 0이옵니다.


NSNumberFormatter * nf = [[NSNumberFormatter new] autorelease]; 
nf.maximumFractionDigits = 5; 
NSLog(@"%@", [nf stringFromNumber:[NSNumber numberWithFloat:@"12.61655f".doubleValue]]); 

는 출력 문자열로 당신에게 12.61655를 제공해야합니다.

+0

문자열을 사용할 수 없습니다. coordiante로 받아 들여지기 위해서는 두 배가되어야합니다. –

+0

12.61655f와 12.61655000000f가 같은 double 값이라는 것을 이해하셔야합니다. 차이점을 만드는 유일한 방법은 앞에 오는 0을 제거하고 문자열로 사용하는 것입니다. NSNumber 마법을 추가하겠습니다. –

+0

문제는 내가 위도로 double을 전달할 때 5 대신 끝에 (소수점 6 자리) 0이 포함되고 좌표가 실패한다는 것입니다. 그래서 나는 5 개의 십진수를 가진 double을 전달할 필요가있다. –