将超过14位的字符串转换为float或any

时间:2014-05-09 15:45:09

标签: ios

在我的应用程序中,我的服务器上有一个位置的经度和纬度。当我从服务器检索lat和lon时,我将它们保存在字符串上。 问题是我不能在GMSCamerPosition中使用字符串:

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latit
                                                        longitude:longt
                                                             zoom:10];

所以我需要转换它们。

我试图将它们转换为整数,但这无济于事。此外,我试图将它们转换为float / double,但这也没有帮助,因为它只接受数字和6位数。 例如 如果这是纬度的字符串= 25.8837788378837

将其转换为float / double会产生25.883778

我在这里检索数据

NSURL *ur = [NSURL URLWithString:[NSString stringWithFormat:@"......"]];    
NSData *data = [NSData dataWithContentsOfURL:ur];

json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers     error:nil];


for(int i=0; i<json.count; i++)
{
    Lng = [[json objectAtIndex:i] objectForKey:@"Lng"];
    Lat = [[json objectAtIndex:i] objectForKey:@"Lat"];
}

Lng和Lat是我的字符串。

Lat = 25.431609385185958    
Lng = 49.583187103271484

在我的情况下。

我在这里使用它们

- (void)viewDidLoad
{
double latit = [lat doubleValue];
double longt = [lon doubleValue];
NSLog(@"%f",latit);
[super viewDidLoad];
// Do any additional setup after loading the view.
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:latit
                                                        longitude:longt
                                                             zoom:10];

双倍也无法做到。我只得到这个= 25.431609。

我知道我必须将NSLog更改为%。13f才能打印出来。但我不想打印它我想在GMSCameraPosition中使用变量。

2 个答案:

答案 0 :(得分:1)

一切正常,因为rmaddy说你不打印所有数字。试试这个:

NSString *lat = @"25.8837788378837";
double doubleLat = [lat doubleValue];
NSLog(@"%.13f",doubleLat);

答案 1 :(得分:0)

NSString *lat = @"25.8837788378837";
NSLog(@"%.13f", [lat doubleValue]);