Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Une opération en virgule flottante non valide s'est produite

Votre résultat dans ACOS() est supérieur à 1 ce qui ne peut pas être.

C'est à cause de l'imprécision de la virgule flottante. cela pourrait être 1.00000001 par exemple. En le mettant juste un peu en dessous de 1 fonctionne comme ceci :

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
           )