| C++ Builder 串口控件 | | C++ Builder 编程技巧 | | C++ Builder 操作指南 | | C++ Builder 参考手册 | | 基础知识 | | cfloat 浮点数 | | cmath 数学函数 | | • acos, acosf, acosl | | • acosh, acoshf, acoshl | | • asin, asinf, asinl | | • asinh, asinhf, asinhl | | • atan, atanf, atanl | | • atan2, atan2f, atan2l | | • atanh, atanhf, atanhl | | • ceil, ceilf, ceill | | • copysign, copysignf, copysignl | | • cos, cosf, cosl | | • cosh, coshf, coshl | | • exp, expf, expl | | • exp2, exp2f, exp2l | | • expm1, expm1f, expm1l | | • fabs, fabsf, fabsl | | • floor, floorf, floorl | | • fmod, fmodf, fmodl | | • frexp, frexpf, frexpl | | • hypot, hypotf, hypotl | | • ldexp, ldexpf, ldexpl | | • log, logf, logl | | • log10, log10f, log10l | | • log1p, log1pf, log1pl | | • log2, log2f, log2l | | • modf, modff, modfl | | • nan, nanf, nanl | | • poly, polyl | | • pow, powf, powl | | • pow10, pow10l | | • round, roundf, roundl | | • sin, sinf, sinl | | • sinh, sinhf, sinhl | | • sqrt, sqrtf, sqrtl | | • tan, tanf, tanl | | • tanh, tanhf, tanhl | | • trunc, truncf, truncl | | • _exception, _exceptionl | | • _matherr, _matherrl | | • HUGE_VAL, HUGE_VALF, HUGE_VALL, _LHUGE_VAL | | • EDOM, ERANGE | | • _mexcep, DOMAIN, SING, OVERFLOW, UNDERFLOW, TLOSS, PLOSS, STACKFAULT | | • M_E, M_LOG2E, M_LOG10E, M_LN2, M_LN10 | | • M_PI, M_PI_2, M_PI_4, M_1_PI, M_2_PI, M_1_SQRTPI, M_2_SQRTPI | | • M_SQRT2, M_SQRT_2 | | • DOMAIN error 定义域错误 | | cstdlib 标准库函数 | | System 字符串 | | System 日期和时间 | | System.Math.hpp 数学函数 | | 其他数据类型 | | VCL 基础类 | | VCL 应用程序 | | Pictures 图片 | | Graphics 绘图 | | Additional 控件 | | System 控件 | | A ~ Z 字母顺序排列的目录 | | 网友留言/技术支持 |
|
| atan2, atan2f, atan2l - 反正切函数,根据平面上的一个点的坐标 (x,y) 求角度 |
函数原型:
| 函数原型 |
C90 |
C99 |
C++98 |
C++11 |
| double atan2(double y, double x); |
√ |
√ |
√ |
√ |
| float atan2f(float y, float x); |
|
√ |
|
|
| long double atan2l(long double y, long double x); |
|
√ |
|
|
| float atan2(float y, float x); |
|
|
√ |
√ |
| long double atan2(long double y, long double x); |
|
|
√ |
√ |
头文件:
#include <cmath>
命名空间:
std
参数:
y:纵坐标值,x:横坐标值,定义域范围为 y ∈ [-Infinity, +Infinity],x ∈ [-Infinity, +Infinity],y 和 x 不能同时为 0
注意:参数的顺序是 y, x,而不是 x, y
返回值:
弧度值,(x, y) 坐标与横轴的夹角,值域范围为 [-π, π]
横轴负半轴上的点的计算结果为 π,而不是 -π,例如 std::atan2(0.0,-1.0);
由于精度原因,第三象限特别接近横轴负半轴的点计算结果为 -π,例如 std::atan2(-1e-30,-1.0);
NAN:定义域错误,此时全局变量 errno 的值为 EDOM。
计算可能会溢出,此时全局变量 errno 的值为 ERANGE。
例子:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Lines->Add(L"atan2( 0.0, 1.0) = " + FloatToStr(std::atan2( 0.0, 1.0)));
Memo1->Lines->Add(L"atan2( 1.0, 1.0) = " + FloatToStr(std::atan2( 1.0, 1.0)));
Memo1->Lines->Add(L"atan2( 1.0, 0.0) = " + FloatToStr(std::atan2( 1.0, 0.0)));
Memo1->Lines->Add(L"atan2( 0.0,-2.0) = " + FloatToStr(std::atan2( 0.0,-2.0)));
Memo1->Lines->Add(L"atan2(-1.0, 2.0) = " + FloatToStr(std::atan2(-1.0, 2.0)));
Memo1->Lines->Add(L"atan2(-2.0,-2.0) = " + FloatToStr(std::atan2(-2.0,-2.0)));
} |

兼容性:
| 函数 \ C++ Builder 编译器 |
bcc32 |
clang32 |
clang64 |
| atan2 |
√ |
√ |
√ |
| atan2f |
|
版本 ≥ 10.2 Tokyo Update 1 |
√ |
| atan2l |
√ |
√ |
√ |
相关链接:
• sin • cos • tan • asin • acos • atan • _matherr • 浮点数异常处理
|
|
|
|