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 |
+-----------------------------------------------------+