跳到主要内容

ATAN

描述

返回反正切值。

  • 当只有一个参数时:返回 x 的反正切值,结果范围为 [-π/2, π/2]
  • 当有两个参数时:返回 y/x 的反正切值,行为与 ATAN2(y, x) 相同,结果范围为 [-π, π]

语法

ATAN([<y>, ]<x>)

参数

参数说明
<x>当只有一个参数时,表示需要被计算反正切的值;当有两个参数时,表示水平坐标(或 x 值),从原点 (0,0) 沿 x 轴的距离
<y>可选参数,表示垂直坐标(或 y 值),从原点 (0,0) 沿 y 轴的距离

返回值

  • 单参数时:参数 x 的反正切值
  • 双参数时:参数 y/x 的反正切值

特殊情况

单参数版本

  • xNaN,返回 NaN
  • x 为正无穷,返回 π/2(约 1.570796326794897)
  • x 为负无穷,返回 -π/2(约 -1.570796326794897)
  • xNULL,返回 NULL

双参数版本

  • yxNaN,返回 NaN
  • x > 0y = ±0.0,返回 ±0(符号同 y
  • x = 0.0(含 +0.0-0.0)且 y > 0,返回 π/2(约 1.570796326794897)
  • x = 0.0(含 +0.0-0.0)且 y < 0,返回 -π/2(约 -1.570796326794897)
  • x < 0y = +0.0,返回 π(约 3.141592653589793);当 x < 0y = -0.0,返回
  • y = +∞x 有限,返回 π/2;当 y = -∞x 有限,返回 -π/2
  • y = +∞x = +∞,返回 π/4(约 0.7853981633974483)
  • y = -∞x = +∞,返回 -π/4(约 -0.7853981633974483)
  • y = +∞x = -∞,返回 3π/4(约 2.356194490192345)
  • y = -∞x = -∞,返回 -3π/4(约 -2.356194490192345)
  • x = +∞y 有限为正,返回 0;当 x = +∞y 有限为负,返回 -0
  • x = -∞y 有限为正,返回 π;当 x = -∞y 有限为负,返回
  • yxNULL,返回 NULL

举例

select atan(0);
+-----------+
| atan(0.0) |
+-----------+
| 0 |
+-----------+
select atan(2);
+--------------------+
| atan(2.0) |
+--------------------+
| 1.1071487177940904 |
+--------------------+
select atan(cast('nan' as double));
+-----------------------------+
| atan(cast('nan' AS DOUBLE)) |
+-----------------------------+
| NaN |
+-----------------------------+
select atan(cast('inf' as double));
+-----------------------------+
| atan(cast('inf' AS DOUBLE)) |
+-----------------------------+
| 1.570796326794897 |
+-----------------------------+
select atan(cast('-inf' as double));
+------------------------------+
| atan(cast('-inf' AS DOUBLE)) |
+------------------------------+
| -1.570796326794897 |
+------------------------------+
select atan(cast('nan' as double), 1.0);
+----------------------------------+
| atan(cast('nan' as double), 1.0) |
+----------------------------------+
| NaN |
+----------------------------------+
select atan(-1.0, cast('inf' as double));
+-----------------------------------+
| atan(-1.0, cast('inf' as double)) |
+-----------------------------------+
| -0 |
+-----------------------------------+
select atan(cast('-inf' as double), cast('inf' as double));
+-----------------------------------------------------+
| atan(cast('-inf' as double), cast('inf' as double)) |
+-----------------------------------------------------+
| -0.7853981633974483 |
+-----------------------------------------------------+