发生无效浮点运算的SQL Server trig函数

问题描述 投票:1回答:1

我用合法的Lat / Long值调用此函数来尝试计算两点之间的距离。它完全适用于我所有积分的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地理类型。

sql-server floating-point trigonometry
1个回答
0
投票

该死的,看起来像是将7位小数位值与其他6位小数位值混合,导致COS函数四舍五入到等于1,这样就烧掉了整个ACOS函数,因为1不在范围?

通过将我的所有输入值减少到6位似乎完全解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.