2012-09-10 2 views
0

Я пытаюсь преобразовать строку в двойное значение, чтобы использовать ее в качестве координаты в аннотации.Двойные десятичные знаки для координат

Мне нужно двойное значение, чтобы на карте было размещено 5 знаков после запятой.

Скажем, строка hello и двойная мне нужна whatsup.

Формат строки точно так, как я ее хочу, и я хочу сделать ее двойной, поэтому я использую свойство doublevalue строки.

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 

Так что теперь, если я хочу написать:

coordinate.latitude = whatsup 

это дает двойной с дополнительным нулем.

Как я могу написать

coordinate.latitude = SOMETHING HERE 

который является двойной с только 5 знаков после запятой?
Могу ли я реализовать «% .5f» здесь как-то?

Пробовал цифровую форму, но это дает мне NSnumber. Мне нужен двойной:

Я использую этот код в цикле for для построения аннотаций (контактов).

Когда я использую тот же самый forloop с удвоениями, я жестко программирую, он отлично работает. Но когда я использую этот код, чтобы получить значения из файла CSV, я не получаю любые контакты:

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

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

+0

Ой, подождите, вы не хотите, чтобы вы сохранили двойное значение без ведущих нулей, не так ли? –

+0

Да, я хочу сохранить двойное значение без нуля в конце ... сохранить его только с 5 десятичными знаками. это возможно? –

ответ

1

ЗАКАНЧИВАТЬ метод NSString -stringWithFormat:

Но чтобы сделать это хорошо вам нужно удалить ведущие нули, поскольку вы не можете знать, что не будет такой ценности, как @ "12.50000".


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

должно дать вам 12.61655 как строки вывода.

+0

Я не могу использовать строку. должна быть двойной, чтобы быть принятой в качестве координатора. –

+0

Мне нужно, чтобы вы поняли, что 12.61655f и 12.61655000000f - это те же двойные значения. Единственное, что имеет значение, это то, что вы можете удалить ведущие нули при использовании в качестве строки. Я добавлю для вас магию NSNumber. –

+0

проблема заключается в том, что, когда я передаю двойной как широту, он содержит нуль в конце (6 знаков после запятой) вместо 5, а координата терпит неудачу. поэтому мне нужно передать двойную цифру с пятью десятичными знаками. –

Смежные вопросы