非常教程

C参考手册

数值 | Numerics

ceilf

在头文件<math.h>中定义

float ceilf( float arg );

(1)

(since C99)

double ceil( double arg );

(2)

long double ceill( long double arg );

(3)

(since C99)

Defined in header <tgmath.h>

#define ceil( arg )

(4)

(since C99)

1-3)计算不小于的最小整数值arg

4)类型 - 通用宏:如果arg有类型long doubleceill被调用。否则,如果arg有整数类型或类型doubleceil则调用。否则,ceilf被调用。

参数

arg

-

浮点值

返回值

如果没有发生错误arg,则返回不小于的最小整数值,即⌈arg⌉。

返回值

论据

错误处理

按照math_errhandling中的指定报告错误。

如果实现支持IEEE浮点运算(IEC 60559),

  • 当前的舍入模式不起作用。
  • 如果arg是±∞,则返回,未修改
  • 如果arg为±0,则返回,未修改
  • 如果arg是NaN,则返回NaN

笔记

FE_INEXACT 在舍入非整数有限值时可能(但不是必须))。

最大的可表示浮点值是所有标准浮点格式中的精确整数,因此该函数不会自行溢出; 但是intmax_t,当存储在整数变量中时,结果可能会溢出任何整数类型(包括)。

这个函数(用于双参数)的行为就像(FE_INEXACT由不执行的自由除外)一样。

#include <math.h>
#include <fenv.h>
#pragma STDC FENV_ACCESS ON
double ceil(double x)
{
    double result;
    int save_round = fegetround();
    fesetround(FE_UPWARD);
    result = rint(x); // or nearbyint 
    fesetround(save_round);
    return result;
}

#include <math.h>
#include <stdio.h>
int main(void)
{
    printf("ceil(+2.4) = %+.1f\n", ceil(2.4));
    printf("ceil(-2.4) = %+.1f\n", ceil(-2.4));
    printf("ceil(-0.0) = %+.1f\n", ceil(-0.0));
    printf("ceil(-Inf) = %+f\n",   ceil(-INFINITY));
}

可能的输出:

ceil(+2.4) = +3.0
ceil(-2.4) = -2.0
ceil(-0.0) = -0.0
ceil(-Inf) = -inf

参考

  • C11标准(ISO / IEC 9899:2011):
    • 7.12.9.1细胞功能(p:251)
    • 7.25类型通用数学<tgmath.h>(p:373-375)
    • F.10.6.1 ceil函数(p:526)
  • C99标准(ISO / IEC 9899:1999):
    • 7.12.9.1细胞功能(p:231-232)
    • 7.22类型通用数学<tgmath.h>(p:335-337)
    • F.9.6.1 ceil函数(p:462-463)
  • C89 / C90标准(ISO / IEC 9899:1990):
    • 4.5.6.1 ceil函数
C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。