Namespaces
Variants

std:: ceil, std:: ceilf, std:: ceill

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
ceil
(C++11) (C++11) (C++11)
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
헤더 파일에 정의됨 <cmath>
(1)
float ceil ( float num ) ;

double ceil ( double num ) ;

long double ceil ( long double num ) ;
(C++23 이전)
constexpr /*floating-point-type*/
ceil ( /*floating-point-type*/ num ) ;
(C++23부터)
float ceilf ( float num ) ;
(2) (C++11부터)
(C++23부터 constexpr)
long double ceill ( long double num ) ;
(3) (C++11부터)
(C++23부터 constexpr)
SIMD 오버로드 (C++26부터)
헤더 파일에 정의됨 <simd>
template < /*math-floating-point*/ V >

constexpr /*deduced-simd-t*/ < V >

ceil ( const V & v_num ) ;
(S) (C++26부터)
추가 오버로드 (C++11부터)
헤더 파일에 정의됨 <cmath>
template < class Integer >
double ceil ( Integer num ) ;
(A) (C++23부터 constexpr)
1-3) num 이상의 가장 작은 정수 값을 계산합니다. 라이브러리는 매개변수 타입으로 모든 cv-unqualified 부동소수점 타입에 대한 std::ceil 오버로드를 제공합니다. (C++23부터)
S) SIMD 오버로드는 v_num 에 대해 요소별(element-wise) std::ceil 을 수행합니다.
(정의는 math-floating-point deduced-simd-t 를 참조하십시오.)
(C++26부터)
A) 모든 정수 타입에 대해 추가 오버로드가 제공되며, 이들은 double 로 처리됩니다.
(since C++11)

목차

매개변수

num - 부동 소수점 또는 정수 값

반환값

오류가 발생하지 않으면, num 보다 작지 않은 가장 작은 정수 값, 즉 ⌈num⌉ 이 반환됩니다.

반환값
math-ceil.svg
num

오류 처리

오류는 math_errhandling 에 명시된 대로 보고됩니다.

구현이 IEEE 부동 소수점 연산(IEC 60559)을 지원하는 경우,

  • 현재 반올림 모드 는 영향을 미치지 않습니다.
  • 만약 num 이 ±∞인 경우, 수정 없이 그대로 반환됩니다.
  • 만약 num 이 ±0인 경우, 수정 없이 그대로 반환됩니다.
  • 만약 num 이 NaN인 경우, NaN이 반환됩니다.

참고 사항

FE_INEXACT 는 비정수 유한 값을 반올림할 때 발생할 수 있습니다(반드시 발생해야 하는 것은 아닙니다).

표준 부동 소수점 형식에서 표현 가능한 가장 큰 부동 소수점 값들은 모두 정확한 정수이므로, 이 함수 자체는 절대 오버플로되지 않습니다. 그러나 결과를 정수 변수(예: std::intmax_t 를 포함한 모든 정수 타입)에 저장할 때는 오버플로가 발생할 수 있습니다. 이러한 이유로 반환 타입은 정수형이 아닌 부동 소수점형입니다.

이 함수( double 인수용)는 다음 코드로 구현된 것처럼 동작합니다( FE_INEXACT 를 발생시키지 않아도 되는 자유를 제외하고):

#include <cfenv>
#include <cmath>
#pragma STDC FENV_ACCESS ON
double ceil(double x)
{
    int save_round = std::fegetround();
    std::fesetround(FE_UPWARD);
    double result = std::rint(x); // 또는 std::nearbyint
    std::fesetround(save_round);
    return result;
}

추가 오버로드는 반드시 (A) 와 정확히 동일하게 제공될 필요는 없습니다. 정수 타입의 인수 num 에 대해, std :: ceil ( num ) std :: ceil ( static_cast < double > ( num ) ) 와 동일한 효과를 가지도록 보장하기에 충분하기만 하면 됩니다.

예제

#include <cmath>
#include <iostream>
int main()
{
    std::cout << std::fixed
              << "ceil(+2.4) = " << std::ceil(+2.4) << '\n'
              << "ceil(-2.4) = " << std::ceil(-2.4) << '\n'
              << "ceil(-0.0) = " << std::ceil(-0.0) << '\n'
              << "ceil(-Inf) = " << std::ceil(-INFINITY) << '\n';
}

출력:

ceil(+2.4) = 3.000000
ceil(-2.4) = -2.000000
ceil(-0.0) = -0.000000
ceil(-Inf) = -inf

참고 항목

(C++11) (C++11)
주어진 값보다 크지 않은 가장 가까운 정수
(함수)
(C++11) (C++11) (C++11)
절댓값 기준으로 주어진 값보다 크지 않은 가장 가까운 정수
(함수)
(C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11)
가장 가까운 정수 (중간값일 경우 0에서 멀어지는 방향으로 반올림)
(함수)
(C++11) (C++11) (C++11)
현재 반올림 모드를 사용한 가장 가까운 정수
(함수)
(C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11)
현재 반올림 모드를 사용한 가장 가까운 정수
(결과가 다를 경우 예외 발생)
(함수)

외부 링크

정수 나눗셈의 빠른 올림 계산 — StackOverflow