C 参考手册

位置:首页 > C 参考手册 >数值 >常用数学函数 > fabs, fabsf, fabsl

定义于头文件 <math.h>
float       fabsf( float arg );
(1) (C99 起)
double      fabs( double arg );
(2)
long double fabsl( long double arg );
(3) (C99 起)
定义于头文件 <tgmath.h>
#define fabs( arg )
(4) (C99 起)
1-3) 计算浮点值 arg 的绝对值。
4) 泛型宏:若参数类型为 long double ,则调用 fabsl 。否则,若参数类型为整数或 double ,则调用 fabs 。否则调用 fabsf 。若参数为复数或虚数,则调用对应的复数函数( cabsfcabscabsl )。

参数

arg - 浮点值

返回值

若成功,则返回 arg 的绝对值( |arg| )。值是准确的,且不依赖任何舍入模式。

错误处理

此函数不受制于任何指定于 math_errhandling 的错误条件。

若实现支持 IEEE 浮点算术( IEC 60559 ),则

  • 若参数为 ±0 ,则返回 +0
  • 若参数为 ±∞ ,则返回 +∞
  • 若参数为 NaN ,则返回 NaN

示例

#include <stdio.h>
#include <math.h>
 
/* 此数值积分假定所有面积均为正。 */
#define PI 3.14159
double num_int (double a, double b,
                double f(double),
                unsigned n) {
    if (a == b) return 0.0;
    if (n == 0) n=1;   /* 避免除以零 */
    double h = (b-a)/n;
    double sum = 0.0;
    for (unsigned k=0; k < n; ++k)
        sum += h*fabs(f(a+k*h));
    return sum;
}
 
int main(void)
{
    printf("fabs(+3) = %f\n", fabs(+3.0));
    printf("fabs(-3) = %f\n", fabs(-3.0));
    // 特殊值
    printf("fabs(-0) = %f\n", fabs(-0.0));
    printf("fabs(-Inf) = %f\n", fabs(-INFINITY));
 
    printf("%f\n", num_int(0.0,2*PI,sin,100000));
 
}

输出:

fabs(+3) = 3.000000
fabs(-3) = 3.000000
fabs(-0) = 0.000000
fabs(-Inf) = inf
4.000000

引用

  • C11 standard (ISO/IEC 9899:2011):
  • 7.12.7.2 The fabs functions (p: 248)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.7.2 The fabs functions (p: 228-229)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.5.6.2 The fabs function

参阅

计算整数值的绝对值( |x|
(函数)
从一个给定值的绝对值和另一个给定值的符号产生值
(函数)
检查给定数是不是负数
(宏函数)
(C99)(C99)(C99)
计算复数的模(绝对值)
(函数)