我从服务器获取经度和经度的JSON是字符串格式然后我通过使用默认的doubleValue函数转换纬度和经度的值来使用这个纬度和经度但是通过使用此值四舍五入。那么,当从字符串中获取doubleValue时,如何防止舍入? 这是我的代码
CLLocationCoordinate2D defaultLoc;
defaultLoc.latitude = [[self.obj valueForKey:@"latitude"] doubleValue];
defaultLoc.longitude = [[self.obj valueForKey:@"longitude"] doubleValue];
NSLog(@"latitude : %f longitude : %f",defaultLoc.latitude,defaultLoc.longitude);
答案 0 :(得分:1)
默认情况下,格式说明符%f
将double值四舍五入为六位小数。尝试将格式指定为%.10f
或您需要的任何小数位数。
答案 1 :(得分:0)
我遇到了同样的问题。 我解决了它,将来自JSON的lat long数据作为NSString。 创建一个对象类来保存与lat和long
等效的NSString NSString * lattodeletetest;
NSString * longtodeletetest;
lattodeletetest=[dict objectForKey:@"Lat"];
longtodeletetest=[dict objectForKey:@"Lon"];
NSArray *array2=[[NSArray alloc] initWithObjects:lattodeletetest,longtodeletetest, nil];
NSString * coordinateString2=[array2 componentsJoinedByString:@","];
safe.strLatLong=coordinateString2;
NSLog(@"%@",safe.strLatLong); //prints 12.758493847753464,71.488293492438438
通过这种方式,可以保留从JSON获得的lat和long而无需编辑。
将其用作CLLOcationCoordinate2d, 使用
NSString *str=strLatLong;
NSArray *array=[str componentsSeparatedByString:@","];
lattodeletetest=[array objectAtIndex:0];
longtodeletetest=[array objectAtIndex:1];
CLLocationCoordinate2D location=CLLocationCoordinate2DMake([lattodeletetest doubleValue],[longtodeletetest doubleValue]);