Namespaces
Variants

ceil, ceilf, ceill

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
ceil
(C99) (C99) (C99)
(C99)

(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
ヘッダーで定義 <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 <fenv.h>
#include <math.h>
#pragma STDC FENV_ACCESS ON
double ceil(double x)
{
    double result;
    int save_round = fegetround();
    fesetround(FE_UPWARD);
    result = rint(x); // または 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

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.12.9.1 ceil関数群 (p: TBD)
  • 7.25 総称数学 <tgmath.h> (p: TBD)
  • F.10.6.1 ceil関数群 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.12.9.1 ceil関数群 (p: TBD)
  • 7.25 総称数学 <tgmath.h> (p: TBD)
  • F.10.6.1 ceil関数群 (p: TBD)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.12.9.1 ceil関数群 (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 ceil関数群 (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関数

関連項目

指定された値以下の最大の整数を計算する
(関数)
(C99) (C99) (C99)
指定された値の絶対値以下の最も近い整数に丸める
(関数)
(C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99)
最も近い整数に丸め、中間の場合はゼロから離れる方向に丸める
(関数)
現在の丸めモードを使用して整数に丸める
(関数)
(C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99)
現在の丸めモードを使用して整数に丸め、
結果が異なる場合は例外を発生させる
(関数)