std::abs(float),std::fabs,std::fabsf,std::fabsl
C++
语言
标准库头文件
自立与有宿主实现
具名要求
语言支持库
概念库 (C++20)
诊断库
工具库
字符串库
容器库
迭代器库
范围库 (C++20)
算法库
数值库
本地化库
输入/输出库
文件系统库 (C++17)
正则表达式库 (C++11)
原子操作库 (C++11)
线程支持库 (C++11)
技术规范
数值库
常用数学函数
数学特殊函数 (C++17)
数学常数 (C++20)
浮点环境 (C++11)
复数
数值数组
伪随机数生成
编译时有理数算术 (C++11)
数值算法
gcd(C++17)
lcm(C++17)
插值
midpoint(C++20)
lerp(C++20)
通用数值运算
iota(C++11)
accumulate
inner_product
adjacent_difference
partial_sum
位操作
bit_cast(C++20)
has_single_bit(C++20)
bit_ceil(C++20)
bit_floor(C++20)
bit_width(C++20)
rotl(C++20)
rotr(C++20)
countl_zero(C++20)
countl_one(C++20)
countr_zero(C++20)
countr_one(C++20)
popcount(C++20)
endian(C++20)
常用数学函数
函数
基本运算
abs(int)labsllabsimaxabs(C++11)
abs(float)fabs
divldivlldivimaxdiv(C++11)
fmod
remainder(C++11)
remquo(C++11)
fma(C++11)
fmax(C++11)
fmin(C++11)
fdim(C++11)
nannanfnanl(C++11)(C++11)(C++11)
指数函数
exp
exp2(C++11)
expm1(C++11)
log
log10
log1p(C++11)
log2(C++11)
幂函数
sqrt
cbrt(C++11)
hypot(C++11)
pow
三角与双曲函数
sin
cos
tan
asin
acos
atan
atan2
sinh
cosh
tanh
asinh(C++11)
acosh(C++11)
atanh(C++11)
误差与伽马函数
erf(C++11)
erfc(C++11)
lgamma(C++11)
tgamma(C++11)
临近整数的浮点运算
ceil
floor
roundlroundllround(C++11)(C++11)(C++11)
trunc(C++11)
nearbyint(C++11)
rintlrintllrint(C++11)(C++11)(C++11)
浮点操作函数
ldexp
scalbnscalbln(C++11)(C++11)
ilogb(C++11)
logb(C++11)
frexp
modf
nextafternexttoward(C++11)(C++11)
copysign(C++11)
分类/比较
fpclassify(C++11)
isfinite(C++11)
isinf(C++11)
isnan(C++11)
isnormal(C++11)
signbit(C++11)
isgreater(C++11)
isgreaterequal(C++11)
isless(C++11)
islessequal(C++11)
islessgreater(C++11)
isunordered(C++11)
宏常量
HUGE_VALFHUGE_VALHUGE_VALL(C++11)(C++11)
INFINITY(C++11)
NAN(C++11)
math_errhandlingMATH_ERRNOMATH_ERREXCEPT(C++11)
FP_NORMALFP_SUBNORMALFP_ZEROFP_INFINITEFP_NAN(C++11)(C++11)(C++11)(C++11)(C++11)
定义于头文件
定义于头文件
(C++17 起)
float abs( float arg );
(1)
double abs( double arg );
(2)
long double abs( long double arg );
(3)
定义于头文件
(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 的绝对值。
7) 接受任何整数类型参数的重载集或函数模板。等价于 (5) (将参数转型为 double )。
对于整数参数, std::abs 的整数重载更可能是较好的匹配。若以满足 std::is_unsigned
(C++17 起)
参数
arg
-
浮点或整数类型值
返回值
若成功,则返回 arg 的绝对值( |arg| )。值是准确的,且不依赖任何舍入模式。
错误处理
此函数不受制于任何指定于 math_errhandling 的错误条件。
若实现支持 IEEE 浮点算术( IEC 60559 ),则
若参数为 ±0 ,则返回 +0
若参数为 ±∞ ,则返回 +∞
若参数为 NaN ,则返回 NaN
示例
运行此代码
#include
#include
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(+3.0) = 3
abs(-3.0) = 3
abs(-0.0) = 0
abs(-Inf) = inf
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
DR
应用于
出版时的行为
正确行为
LWG 2735
C++11
错误地要求了 std::abs 有对整数类型返回 double 的重载
移除该要求
参阅
abs(int)labsllabs(C++11)
计算整数值的绝对值( \(\small{|x|}\)|x| ) (函数)
copysigncopysignfcopysignl(C++11)(C++11)(C++11)
复制浮点值的符号 (函数)
signbit(C++11)
检查给定数是否为负 (函数)
abs(std::complex)
返回复数的模 (函数模板)
abs(std::valarray)
应用函数 std::abs 到 valarray 的每个元素 (函数模板)