Функции триггера SQL Server, выбрасывающие недопустимую операцию с плавающей точкой - PullRequest
0 голосов
/ 13 сентября 2018

Я вызываю эту функцию с допустимыми значениями широты и долготы, чтобы попытаться вычислить расстояние между двумя точками.Он отлично работает для 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

Как я могу усилить функцию, чтобы проверять и обрабатывать это?

Я действительно хотел бы продолжать использовать функции триггера, а не собственный тип географии SQL Server по соображениям производительности.

1 Ответ

0 голосов
/ 13 сентября 2018

Черт, похоже, что сочетание десятизначных десятичных разрядов с другими шестизначными десятичными знаками привело к тому, что функция COS была округлена до 1, что привело к увеличению общей функции ACOS, потому что 1 вне диапазона?

Сокращение всех моих входных значений до 6 цифр, похоже, полностью устранило проблему.

...