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
Definido en el encabezado <cmath>
(1)
float ceil ( float num ) ;

double ceil ( double num ) ;

long double ceil ( long double num ) ;
(hasta C++23)
constexpr /*floating-point-type*/
ceil ( /*floating-point-type*/ num ) ;
(desde C++23)
float ceilf ( float num ) ;
(2) (desde C++11)
(constexpr desde C++23)
long double ceill ( long double num ) ;
(3) (desde C++11)
(constexpr desde C++23)
Sobrecarga SIMD (desde C++26)
Definido en el encabezado <simd>
template < /*math-floating-point*/ V >

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

ceil ( const V & v_num ) ;
(S) (desde C++26)
Definido en el encabezado <cmath>
template < class Integer >
double ceil ( Integer num ) ;
(A) (constexpr desde C++23)
1-3) Calcula el valor entero mínimo no menor que num . La biblioteca proporciona sobrecargas de std::ceil para todos los tipos de punto flotante sin calificación cv como el tipo del parámetro. (desde C++23)
S) La sobrecarga SIMD realiza un std::ceil elemento por elemento en v_num .
(Consulte math-floating-point y deduced-simd-t para sus definiciones.)
(desde C++26)
A) Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como double .
(since C++11)

Contenidos

Parámetros

num - valor de punto flotante o entero

Valor de retorno

Si no ocurren errores, se devuelve el valor entero más pequeño no menor que num , es decir ⌈num⌉ .

Valor de retorno
math-ceil.svg
num

Manejo de errores

Los errores se reportan como se especifica en math_errhandling .

Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),

  • El modo de redondeo actual no tiene efecto .
  • Si num es ±∞, se devuelve sin modificación.
  • Si num es ±0, se devuelve sin modificación.
  • Si num es NaN, se devuelve NaN.

Notas

FE_INEXACT puede (pero no está obligado a) activarse al redondear un valor finito no entero.

Los valores de punto flotante más grandes representables son enteros exactos en todos los formatos estándar de punto flotante, por lo que esta función nunca desborda por sí misma; sin embargo, el resultado puede desbordar cualquier tipo entero (incluyendo std::intmax_t ), cuando se almacena en una variable entera. Es por esta razón que el tipo de retorno es de punto flotante y no integral.

Esta función (para double argumento) se comporta como si (excepto por la libertad de no generar FE_INEXACT ) estuviera implementada mediante el siguiente código:

#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); // o std::nearbyint
    std::fesetround(save_round);
    return result;
}

Las sobrecargas adicionales no requieren ser proporcionadas exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: ceil ( num ) tenga el mismo efecto que std :: ceil ( static_cast < double > ( num ) ) .

Ejemplo

#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';
}

Salida:

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

Véase también

(C++11) (C++11)
entero más cercano no mayor que el valor dado
(función)
(C++11) (C++11) (C++11)
entero más cercano no mayor en magnitud que el valor dado
(función)
(C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11)
entero más cercano, redondeando alejándose de cero en casos intermedios
(función)
(C++11) (C++11) (C++11)
entero más cercano usando el modo de redondeo actual
(función)
(C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11)
entero más cercano usando el modo de redondeo actual con
excepción si el resultado difiere
(función)

Enlaces externos

Techo rápido de una división entera — StackOverflow