Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Si è verificata un'operazione in virgola mobile non valida

Il tuo risultato in ACOS() è maggiore di 1 che non può essere.

Ciò è dovuto all'imprecisione in virgola mobile. potrebbe essere 1.00000001 per esempio. Mettendolo appena sotto 1 funziona così:

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
           )