NSString 到 CLLocationDegrees 到 NSString 正在改变值
NSString to CLLocationDegrees to NSString is changing value
我正在从 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
。
任何有关如何解决此问题的提示都将不胜感激
NSNumber stringValue
将为您提供默认表示,通常只有 5 位小数。
一个选项是使用 stringWithFormat
并使用与原始 JSON 中的数据相匹配的格式。
NSString *latitude = [NSString stringWithFormat:@"%.7f", lat];
调整格式说明符以满足您的确切需求。
另外请记住,由于浮点数的表示方式的性质,从原始字符串到 double
可能会导致一些精度损失。除了在原始字符串如此重要的情况下保留对原始字符串的引用之外,您无能为力。
我正在从 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
。
任何有关如何解决此问题的提示都将不胜感激
NSNumber stringValue
将为您提供默认表示,通常只有 5 位小数。
一个选项是使用 stringWithFormat
并使用与原始 JSON 中的数据相匹配的格式。
NSString *latitude = [NSString stringWithFormat:@"%.7f", lat];
调整格式说明符以满足您的确切需求。
另外请记住,由于浮点数的表示方式的性质,从原始字符串到 double
可能会导致一些精度损失。除了在原始字符串如此重要的情况下保留对原始字符串的引用之外,您无能为力。