跳到主要内容
最后于 更新

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 的反正切值

特殊情况​

单参数版本​

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

双参数版本​

  • 若 y 或 x 为 NaN,返回 NaN
  • 当 x > 0 且 y = ±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 < 0 且 y = +0.0,返回 π(约 3.141592653589793);当 x < 0 且 y = -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 有限为负,返回 -π
  • 当 y 或 x 为 NULL,返回 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 |
+-----------------------------------------------------+