std::abs(float), std::fabs
来自cppreference.com
定义于头文件 <cmath>
|
||
定义于头文件 <cstdlib>
|
(C++17 起) |
|
float abs( float arg ); |
(1) | |
double abs( double arg ); |
(2) | |
long double abs( long double arg ); |
(3) | |
定义于头文件 <cmath>
|
||
float fabs( float arg ); |
(4) | |
double fabs( double arg ); |
(5) | |
long double fabs( long double arg ); |
(6) | |
double fabs( Integral arg ); |
(7) | (C++11 起) |
1-6) 计算浮点值
arg
的绝对值。7) 任何 (4-6) 所不覆盖的算术类型参数组合的重载集或函数模板。若任何参数拥有整数类型,则将它转型为 double 。若任何参数为 long double ,则返回类型为 long double ,否则为 double 。
对于整数参数, std::abs 的整数重载更可能是较好的匹配。若以满足 std::is_unsigned<X>::value 为 true 的 X 类型参数调用 std::abs ,而整数提升不能将 X 转换为 int ,则程序为病式。 |
(C++17 起) |
目录 |
[编辑] 参数
arg | - | 浮点或整数类型值 |
[编辑] 返回值
若成功,则返回 arg
的绝对值( |arg|
)。值是准确的,且不依赖任何舍入模式。
[编辑] 错误处理
此函数不受制于任何指定于 math_errhandling 的错误条件。
若实现支持 IEEE 浮点算术( IEC 60559 ),则
- 若参数为 ±0 ,则返回 +0
- 若参数为 ±∞ ,则返回 +∞
- 若参数为 NaN ,则返回 NaN
[编辑] 注意
C++11 与 C++14 间,标准错误地要求 std::abs
拥有对整数类型返回 double 的重载。这被缺陷报告 2735 于 C++17 移除。
[编辑] 示例
运行此代码
可能的输出:
abs(+3.0) = 3 abs(-3.0) = 3 abs(-0.0) = 0 abs(-Inf) = inf
[编辑] 参阅
(C++11) |
计算整数值的绝对值( |x| ) (函数) |
(C++11) |
复制浮点值的符号 (函数) |
(C++11) |
检查给定数是否为负 (函数) |
返回复数的绝对值 (函数模板) | |
应用函数 std::abs 到 valarray 的每个元素 (函数模板) | |
fabs的 C 文档
|