std::abs(float), std::fabs, std::fabsf, std::fabsl
来自 cppreference.com
定义在头文件中 <cmath> |
||
定义在头文件中 <cstdlib> |
||
(1) | ||
float abs( float num ); double abs( double num ); |
(直到 C++23) | |
constexpr /* 浮点类型 */ abs( /* 浮点类型 */ num ); |
(自 C++23) | |
定义在头文件中 <cmath> |
||
(2) | ||
float fabs ( float num ); double fabs ( double num ); |
(直到 C++23) | |
constexpr /* 浮点类型 */ fabs ( /* 浮点类型 */ num ); |
(自 C++23) | |
float fabsf( float num ); |
(3) | (自 C++11) (自 C++23 起为 constexpr) |
long double fabsl( long double num ); |
(4) | (自 C++11) (自 C++23 起为 constexpr) |
其他重载 (自 C++11) |
||
定义在头文件中 <cmath> |
||
template< class Integer > double fabs ( Integer num ); |
(A) | (自 C++11) (自 C++23 起为 constexpr) |
1-4) 计算浮点值 num 的绝对值。 库为所有 cv 非限定浮点类型提供了
std::abs
和 std::fabs
的重载,作为参数 num 的类型。 (自 C++23)
A) 为所有整数类型提供了其他重载,这些类型被视为 double。
|
(自 C++11) |
对于整数参数,std::abs
的整数重载 可能是更好的匹配。如果 std::abs
使用不能通过 整数提升 转换为 int 的无符号整数参数调用,则程序将是非法的。
内容 |
[编辑] 参数
num | - | 浮点或整数值 |
[编辑] 返回值
如果成功,则返回 arg 的绝对值 (|arg|
)。返回的值是精确的,不依赖于任何舍入模式。
[编辑] 错误处理
此函数不受 math_errhandling 中指定的任何错误条件的影响。
如果实现支持 IEEE 浮点运算 (IEC 60559),
- 如果参数是 ±0,则返回 +0。
- 如果参数是 ±∞,则返回 +∞。
- 如果参数是 NaN,则返回 NaN。
[编辑] 注意
其他重载不需要完全按照 (A) 提供。它们只需要足够保证对于整数类型的参数 num,std::fabs(num) 与 std::fabs(static_cast<double>(num)) 具有相同的效果。
[编辑] 示例
运行此代码
#include <cmath> #include <iostream> int main() { std::cout << "abs(+3.0) = " << std::abs(+3.0) << '\n' << "abs(-3.0) = " << std::abs(-3.0) << '\n'; // special values std::cout << "abs(-0.0) = " << std::abs(-0.0) << '\n' << "abs(-Inf) = " << std::abs(-INFINITY) << '\n' << "abs(-NaN) = " << std::abs(-NAN) << '\n'; }
可能的输出
abs(+3.0) = 3 abs(-3.0) = 3 abs(-0.0) = 0 abs(-Inf) = inf abs(-NaN) = nan
[编辑] 缺陷报告
以下行为更改缺陷报告被追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 发布的行为 | 正确行为 |
---|---|---|---|
LWG 2192 | C++98 | std::abs 的重载在两个头文件中声明不一致 |
声明了这些重载 在两个头文件中 |
LWG 2735 | C++11 | 用于整数类型的 std::abs 重载错误地要求返回 double |
删除了该要求 |
[编辑] 另见
(C++11) |
计算整数值的绝对值 (|x|) (函数) |
(C++11)(C++11)(C++11) |
复制浮点值的符号 (函数) |
(C++11) |
检查给定数字是否为负 (函数) |
返回复数的模 (函数模板) | |
将函数 abs 应用于 valarray 的每个元素 (函数模板) | |
C 文档 for fabs
|