我有点困惑。这是我的问题
mysql> select acos(cos( radians(37.09024) ) * cos( radians(37.09024) ) * cos(radians(-95.712891) - radians(-95.712891)) + sin(radians(37.09024)) * sin(radians(37.09024)));
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| acos(cos( radians(37.09024) ) * cos( radians(37.09024) ) * cos(radians(-95.712891) - radians(-95.712891)) + sin(radians(37.09024)) * sin(radians(37.09024))) |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| NULL |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> select cos( radians(37.09024) ) * cos( radians(37.09024) ) * cos(radians(-95.712891) - radians(-95.712891)) + sin(radians(37.09024)) * sin(radians(37.09024));
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| cos( radians(37.09024) ) * cos( radians(37.09024) ) * cos(radians(-95.712891) - radians(-95.712891)) + sin(radians(37.09024)) * sin(radians(37.09024)) |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| 1 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
我知道ACOS函数的范围[-1,1]。因此ACOS(1)必须为0。
mysql> select acos(1); +---------+
| acos(1) |
+---------+
| 0 |
+---------+
1 row in set (0.00 sec)
mysql>
我的MySQL版本很旧,但我无法更新。MySQL VER 14.12分布5.0.22
我进行了更改
select acos(cos( radians(37.09024) ) * cos( radians(37.09024) ) * cos(radians(-95.712891) - radians(-95.712891)) + sin(radians(37.09024)) * sin(radians(37.09024))<strong>*1</strong>);
工作。但是我没有明白为什么ACOS(... ** 1 )进行工作。当我做ACO时( 1* ...)不起作用。如果是这样,回报不是数字。这两种情况都应起作用
错误#2338 Trignmetric Arithmatic问题在版本4.0.17中报告,但我无法在版本5.0.22中重现该错误。
测试:
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2 to server version: 5.0.22-standard
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql> SELECT VERSION();
+-----------------+
| VERSION() |
+-----------------+
| 5.0.22-standard |
+-----------------+
1 row in set (0.00 sec)
mysql> SELECT @@GLOBAL.sql_mode, @@SESSION.sql_mode;
+-------------------+--------------------+
| @@GLOBAL.sql_mode | @@SESSION.sql_mode |
+-------------------+--------------------+
| | |
+-------------------+--------------------+
1 row in set (0.00 sec)
mysql> SELECT ACOS(COS(RADIANS(37.09024)) * COS(RADIANS(37.09024) ) * COS(RADIANS(-95.712891) - RADIANS(-95.712891)) + SIN(RADIANS(37.09024)) * SIN(RADIANS(37.09024)));
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| ACOS(COS(RADIANS(37.09024)) * COS(RADIANS(37.09024) ) * COS(RADIANS(-95.712891) - RADIANS(-95.712891)) + SIN(RADIANS(37.09024)) * SIN(RADIANS(37.09024))) |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| 0 |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)