NSString到CLLocationDegrees到NSString正在改变值

时间:2016-05-04 21:53:34

标签: objective-c json nsstring cllocation

我从JSON API获取经度和纬度。这些值以字符串形式出现。

我将值存储在CLLocationDegrees中,如下所示:

CLLocationDegrees lat = [[coordinates objectForKey:@"lat"] doubleValue];
CLLocationDegrees lon = [[coordinates objectForKey:@"lat"] doubleValue];

但是当我稍后从latlon检索值并将它们放入NSString时,该值已经从JSON提供的值发生了变化。更改通常只是坐标的最后几位,但足以引起问题。

NSString *latitude = [[NSNumber numberWithDouble:lat] stringValue];
NSString *longitude = [[NSNumber numberWithDouble:lon] stringValue];

基本上,此时[coordinates objectForKey:@"lat"]不等于latitude

有关如何解决此问题的任何提示将不胜感激

1 个答案:

答案 0 :(得分:0)

NSNumber stringValue会给你一个默认表示,通常只有5位小数。

一个选项是使用stringWithFormat并使用与原始JSON中的数据匹配的格式。

NSString *latitude = [NSString stringWithFormat:@"%.7f", lat];

调整格式说明符以满足您的确切需求。

另请注意,由于浮点数的表示方式,从原始字符串到double可能会导致精度损失。除非保留对原始字符串的引用,否则你无能为力。