我的距离计算功能有一个小问题,这是一个操场的屏幕快照,当tsum == 1时,我们看到距离变量== NaN(而不是0)

ios - 距离计算,acos = Nan而不是0-LMLPHP

实际上在运行时(在我的真实应用程序中,在模拟器中),t1 + t2 + t3 == 1.0000000000000002

ios - 距离计算,acos = Nan而不是0-LMLPHP

这真的很奇怪,因为当我手动计算时,我有1

ios - 距离计算,acos = Nan而不是0-LMLPHP

但ios似乎不同意。
你能解释一下吗?

附言:这是通往游乐场的链接
https://drive.google.com/drive/folders/0B6uRRn4bFMAeN3kwSVc4dUVQcDQ?usp=sharing

P.S.2:我给出了一个屏幕截图,以证明我没有操纵值:
ios - 距离计算,acos = Nan而不是0-LMLPHP

最佳答案

如果您正在寻找适用于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/

10-13 04:00