我的距离计算功能有一个小问题,这是一个操场的屏幕快照,当tsum == 1时,我们看到距离变量== NaN(而不是0)
实际上在运行时(在我的真实应用程序中,在模拟器中),t1 + t2 + t3 == 1.0000000000000002
这真的很奇怪,因为当我手动计算时,我有1
但ios似乎不同意。
你能解释一下吗?
附言:这是通往游乐场的链接
https://drive.google.com/drive/folders/0B6uRRn4bFMAeN3kwSVc4dUVQcDQ?usp=sharing
P.S.2:我给出了一个屏幕截图,以证明我没有操纵值:
最佳答案
如果您正在寻找适用于Apple平台的产品,请使用
import CoreLocation
let lat0 = 0.0
let lon0 = 0.0
let lat1 = 90.0
let lon1 = 180.0
let l0 = CLLocation(latitude: lat0, longitude: lon0)
let l1 = CLLocation(latitude: lat1, longitude: lon1)
let distance = l0.distance(from: l1) // in meters
如果您不喜欢,请替换您的配方
d = acos(sinφ1⋅sinφ2+ cosφ1⋅cosφ2⋅cosΔλ)⋅R
与
a =sin²(Δφ/ 2)+ cosφ1⋅cosφ2⋅sin²(Δλ/ 2)
c = 2⋅atan2(√a,√(1-a))
d = R⋅c
这称为 Haversine 公式。借助atan2函数,您可以避免浮点数学麻烦
关于ios - 距离计算,acos = Nan而不是0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43701178/