Spec-Zone.ru › C

ceil, ceilf, ceill

Определено в заголовочном файле <math.h>
float       ceilf( float arg );
(1) (с C99)
double      ceil( double arg );
(2)
long double ceill( long double arg );
(3) (с C99)
Определено в заголовочном файле <tgmath.h>
#define ceil( arg )
(4) (с C99)
1-3) Вычисляет наименьшее целое значение, не меньшее чем arg.
4) Универсальный макрос для разных типов: Если arg имеет тип long double, вызывается ceill. В противном случае, если arg имеет целочисленный тип или тип double, вызывается ceil. В противном случае, вызывается ceilf.

Параметры

arg - значение с плавающей точкой

Возвращаемое значение

Если ошибки не произошло, возвращается наименьшее целое значение, не меньшее чем arg, то есть ⌈arg⌉.

Возвращаемое значение
math-ceil.svg
Аргумент

Обработка ошибок

Ошибки сообщаются так, как указано в math_errhandling.

Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559),

  • Текущий режим округления не влияет на результат.
  • Если arg равно ±∞, оно возвращается без изменений.
  • Если arg равно ±0, оно возвращается без изменений.
  • Если arg является NaN, возвращается NaN.

Примечания

FE_INEXACT может (но не обязательно) генерироваться при округлении нецелого конечного значения.

Наибольшие представимые значения с плавающей точкой — это точные целые числа во всех стандартных форматах с плавающей точкой, поэтому эта функция никогда не переполняется сама по себе; однако результат может переполнить любой целочисленный тип (включая intmax_t), когда он хранится в целочисленной переменной.

Эта функция (для аргумента типа double) ведет себя так, как если бы (за исключением свободы не генерировать 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 Функции ceil (стр. 251)
    • 7.25 Универсальные математические функции <tgmath.h> (стр. 373-375)
    • F.10.6.1 Функции ceil (стр. 526)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.12.9.1 Функции ceil (стр. 231-232)
    • 7.22 Универсальные математические функции <tgmath.h> (стр. 335-337)
    • F.9.6.1 Функции ceil (стр. 462-463)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
    • 4.5.6.1 Функция ceil

См. также

floorfloorffloorl
(C99)(C99)
вычисляет наибольшее целое число, не большее данного значения
(функция)
trunctruncftruncl
(C99)(C99)(C99)
округляет до ближайшего целого числа, не большего по величине, чем данное значение
(функция)
roundroundfroundllroundlroundflroundlllroundllroundfllroundl
(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
округляет до ближайшего целого числа, округляя в сторону от нуля в случае пополам
(функция)
nearbyintnearbyintfnearbyintl
(C99)(C99)(C99)
округляет до целого числа, используя текущий режим округления
(функция)
rintrintfrintllrintlrintflrintlllrintllrintfllrintl
(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
округляет до целого числа, используя текущий режим округления, с исключением, если результат отличается
(функция)
Документация C++ для ceil

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/ceil

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API