【发布时间】:2015-01-05 13:12:17
【问题描述】:
我需要获取 CLLocation 对象,其纬度和经度的精度仅为 6 点。但是,当我从浮点值创建一个 CLLocation 对象时,我得到的 CLLocation 对象的纬度和经度精度更高(比如最多 10 个点)。
我拥有的是 纬度 = 10.268408,经度 = 76.353965
我使用以下代码创建具有上述坐标的 CLLocation 对象。
CLLocation *createdLocation = [[CLLocation alloc]initWithLatitude:latitude
longitude:longitude];
创建上述对象后,我打印了 createdLocation.coordinate 的值。 我得到的是 (纬度 = 10.268408101671659,经度 = 76.353965649742264)
那么 iOS 如何以及为什么自动将精度从我的 6 点精度完成到 15?
更新
现在我将纬度和经度插入到核心数据数据库中。然后我从数据库中获取经纬度,然后创建了一个 CLLocation 对象。现在精度如我所愿(如下所示)
纬度 = 10.268408,经度 = 76.353965
当我写信给 DB 时发生了什么不同?为什么它不适用于 6 点精度的浮点变量?
【问题讨论】:
-
CLLocations 将值存储为双精度值。因为 float 和 double 不是“连续的”,因为我们从数字中使用它们,它们存储“谨慎的步骤”。所以我的猜测是你会看到下一个匹配的双精度浮点数。例如,您可能会看到关于 float/double stackoverflow.com/questions/5098558/float-vs-double-precision
标签: ios objective-c core-data cllocationmanager cllocation