C
数值 | Numerics

ceil

ceil, ceilf, ceill

在头文件中定义
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),

  • 当前的舍入模式不起作用。

笔记

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):