我正在使用合法的纬度/经度值调用此函数,以尝试计算两点之间的距离。对于我所有点的99.99%来说,它运行得非常好,但是在这个特定点上,它崩溃了:
SELECT ACOS(SIN(-34.8821289 * PI() / 180) * SIN(-34.882129 * PI() / 180) + (COS(-34.8821289 * PI() / 180) * COS(-34.882129 * PI() / 180) * COS((150.7406616 - 150.740662) * PI() / 180))) / (PI() / 180) * 111.325
如何加强该功能来检查和处理此问题?
出于性能原因,我真的很想继续使用trig函数而不是本机SQL Server地理类型。
答案 0 :(得分:0)
该死,看起来有些7位小数位的值与其他6位小数位的值的混合,导致COS函数四舍五入等于1,这随后使整个ACOS函数膨胀,因为1超出范围?
通过将我所有的输入值减小到6位似乎已经完全解决了这个问题。