命名空间
变体
操作

std::abs(float), std::fabs, std::fabsf, std::fabsl

来自 cppreference.cn
< cpp‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本操作
abs(float)fabs
(C++11)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数函数
(C++11)
(C++11)

(C++11)
(C++11)
幂函数
(C++11)
(C++11)
三角
双曲函数
(C++11)
(C++11)
(C++11)

误差函数和伽马函数
(C++11)
(C++11)
(C++11)
(C++11)
取整浮点运算
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮点操纵函数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分类和比较
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
类型
(C++11)
(C++11)
(C++11)
宏常量
分类
(C++11)(C++11)(C++11)(C++11)(C++11)


 
定义于头文件 <cmath>
定义于头文件 <cstdlib>
(1)
float       abs( float num );

double      abs( double num );

long double abs( long double num );
(直至 C++23)
constexpr /* 浮点类型 */
            abs( /* 浮点类型 */ num );
(C++23 起)
定义于头文件 <cmath>
(2)
float       fabs ( float num );

double      fabs ( double num )

long double fabs ( long 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::absstd::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) 提供额外的重载。它们只需要足以确保对于整型参数 numstd::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++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 2192 C++98 std::abs 的重载
在两个头文件中声明不一致
在两个头文件中都声明了
这些重载
LWG 2735 C++11 对于整型,std::abs 的重载
错误地要求返回 double
移除了此要求

[编辑] 参阅

计算整数值的绝对值 (|x|)
(函数) [编辑]
(C++11)(C++11)(C++11)
复制浮点值的符号
(函数) [编辑]
(C++11)
检查给定数字是否为负数
(函数) [编辑]
返回复数的模
(函数模板) [编辑]
将函数 abs 应用于 valarray 的每个元素
(函数模板) [编辑]
C 文档 关于 fabs