0

我从服务器以 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);
4

2 回答 2

1

默认情况下,格式说明符%f将双精度值四舍五入为六位小数。尝试将格式指定为%.10f您需要的任何小数位数。

于 2012-06-25T13:29:11.433 回答
0

我有同样的问题。我通过将来自 JSON 的经纬度数据作为 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]);
于 2015-10-26T12:20:21.163 回答