2016-03-14 2 views
0

Я хочу, чтобы преобразовать строку плавать, вот код, который я написал:Преобразование NSString плавать - Objective C

NSString *latString = [[response valueForKey:@"coords"] valueForKey:@"lat"]; 
NSLog(@"Latitude String: %@", latString); 
self.coordLat = [latString floatValue]; 
NSLog(@"Latitude: %lu", (unsigned long) self.coordLat); 

Но вот что я получаю:

2016-03-14 17:36:00.471 marsad[9968:186761] Latitude String: 36.860532 
2016-03-14 17:36:00.587 marsad[9852:152630] Latitude: 36 

ответ

3

unsigned long типа, как integers так естественно, что десятичная точка усечена.

Попробуйте вместо NSLog(@"Latitude: %f", self.coordLat);.

+0

Извините, что я новичок в IOS, с чем его заменить? –

0
NSLog(@"Latitude: %lu", (unsigned long) self.coordLat); 

Это преобразует значение в длинное. Вы должны использовать что-то вроде:

NSLog(@"Latitude: %f", self.coordLat); 
0

Вы можете использовать NSStringfloatValue только для чтения свойство, как описано в Apple docs:

Это свойство не содержит пробелов в начале строки. Это свойство HUGE_VAL или -HUGE_VAL при переполнении, 0,0 при потоке. Это свойство равно 0.0, если строка не начинается с действительного текстового представления числа с плавающей запятой.

Если строка правильно отформатирован, вы можете просто бросить его плавать с помощью:

NSString *val = @"3.45"; 
float fCost = [val floatValue]; 
+0

Вообще говоря, некоторое объяснение того, почему это правильный ответ, даст лучшие результаты (более высокие, более приемлемые ответы) –

0
NSLog(@"Latitude: %g", self.coordLat); 

64-битное число с плавающей точкой (двойной), напечатанная в стиле% e, если показатель меньше 4 или больше или равен точности, в противном случае в стиле% f.

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