我从JSON API获取经度和纬度。这些值以字符串形式出现。
我将值存储在CLLocationDegrees
中,如下所示:
CLLocationDegrees lat = [[coordinates objectForKey:@"lat"] doubleValue];
CLLocationDegrees lon = [[coordinates objectForKey:@"lat"] doubleValue];
但是当我稍后从lat
和lon
检索值并将它们放入NSString
时,该值已经从JSON提供的值发生了变化。更改通常只是坐标的最后几位,但足以引起问题。
NSString *latitude = [[NSNumber numberWithDouble:lat] stringValue];
NSString *longitude = [[NSNumber numberWithDouble:lon] stringValue];
基本上,此时[coordinates objectForKey:@"lat"]
不等于latitude
。
有关如何解决此问题的任何提示将不胜感激
答案 0 :(得分:0)
NSNumber stringValue
会给你一个默认表示,通常只有5位小数。
一个选项是使用stringWithFormat
并使用与原始JSON中的数据匹配的格式。
NSString *latitude = [NSString stringWithFormat:@"%.7f", lat];
调整格式说明符以满足您的确切需求。
另请注意,由于浮点数的表示方式,从原始字符串到double
可能会导致精度损失。除非保留对原始字符串的引用,否则你无能为力。