2012-06-20 3 views
3

У меня есть проблема с запросом SQL и я сузил его до следующего коданедопустимая операция с плавающей точкой произошла

SELECT ACOS((SIN(PI()* 52.9519918465976/180)*SIN(PI()* 52.9519918465976/180))+(COS(PI()* 52.9519918465976/180)*cos(PI()* 52.9519918465976/180)*COS(PI()* -1.14304013581239/180-PI()* -1.14304013581239/180))) AS test 

я получаю следующее сообщение об ошибке «Произошла недопустимая операция с плавающей точкой»

Может ли кто-нибудь узнать, в чем проблема?

Заранее спасибо

+0

Вы пытались сломать выражение в его компонентах? – ChrisF

ответ

5

Ваш результат в ACOS() больше, чем 1, который не может быть.

Это из-за неточности с плавающей запятой. это может быть, например, 1.00000001. Помещая его чуть ниже 1, работает следующим образом:

SELECT ACOS( 
      (SIN(PI()* 52.9519918465976/180.0)* SIN(PI()* 52.9519918465976/180.0)) 
      + (COS(PI()* 52.9519918465976/180)*cos(PI()* 52.9519918465976/180.0)*COS(PI()* -1.14304013581239/180.0-PI()* -1.14304013581239/180.0)) 
      - 0.0000001 
      ) 
Смежные вопросы