acos()函数返回null



我有点困惑。这是我的问题

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)

最新更新