std::abs(float), std::fabs, std::fabsf, std::fabsl
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    |   定义于头文件  <cmath>
  | 
||
|   定义于头文件  <cstdlib>
  | 
||
|   float       abs( float arg );  | 
(1) | |
|   double      abs( double arg );  | 
(2) | |
|   long double abs( long double arg );  | 
(3) | |
|   定义于头文件  <cmath>
  | 
||
| (4) | ||
|   float       fabs ( float arg );  | 
||
|   float       fabsf( float arg );  | 
(C++11 起) | |
|   double      fabs ( double arg );  | 
(5) | |
| (6) | ||
|   long double fabs ( long double arg );  | 
||
|   long double fabsl( long double arg );  | 
(C++11 起) | |
|   double      fabs ( IntegralType arg );  | 
(7) | (C++11 起) | 
1-6) 计算浮点值 
arg 的绝对值。对于整数参数, std::abs 的整数重载更可能是较好的匹配。若以不能由整型提升转换成 int 的无符号整型参数调用 std::abs ,则程序为谬构。
参数
| arg | - | 浮点或整数类型值 | 
返回值
若成功,则返回 arg 的绝对值( |arg| )。值是准确的,且不依赖任何舍入模式。
错误处理
此函数不受制于任何指定于 math_errhandling 的错误条件。
若实现支持 IEEE 浮点算术( IEC 60559 ),则
- 若参数为 ±0 ,则返回 +0
 - 若参数为 ±∞ ,则返回 +∞
 - 若参数为 NaN ,则返回 NaN
 
示例
运行此代码
#include <iostream> #include <cmath> int main() { std::cout << "abs(+3.0) = " << std::abs(+3.0) << '\n' << "abs(-3.0) = " << std::abs(-3.0) << '\n'; // 特殊值 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)  | 
  检查给定数是否为负  (函数)  | 
|   返回复数的模  (函数模板)  | |
|   应用函数 std::abs 到 valarray 的每个元素  (函数模板)  |