std::ceil, std::ceilf, std::ceill
Definido en el archivo de encabezado <cmath> | ||
float ceil (float arg ); | (1) | (constexpr since C++23) |
float ceilf(float arg ); | (2) | (desde C++11) (constexpr since C++23) |
double ceil (double arg ); | (3) | (constexpr since C++23) |
longdouble ceil (longdouble arg ); | (4) | (constexpr since C++23) |
longdouble ceill(longdouble arg ); | (5) | (desde C++11) (constexpr since C++23) |
double ceil ( TipoEntero arg ); | (6) | (desde C++11) (constexpr since C++23) |
arg
. Contenido |
[editar]Parámetros
arg | - | Valor de punto flotante. |
[editar]Valor de retorno
Si no se producen errores, se devuelve el valor entero más pequeño no menor que arg
, es decir, ⌈arg⌉.
[editar]Manejo de errores
Los errores se informan como se especifica en math_errhandling.
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559),
- El modo de redondeo actual no tiene efecto.
- Si
arg
es +∞ se devuelve +∞. - Si
arg
es -∞, se devuelve -∞. - Si
arg
es +0, se devuelve +0. - Si
arg
es -0, se devuelve -0. - Si
arg
es NaN, se devuelve NaN.
[editar]Notas
Se puede generar FE_INEXACT (pero no es obligatorio que lo sea) al redondear un valor finito no entero.
Los valores de punto flotante representables más grandes son enteros exactos en todos los formatos de punto flotante estándar, por lo que esta función nunca se desborda por sí sola; sin embargo, el resultado puede desbordar cualquier tipo de entero (incluido std::intmax_t), cuando se almacena en una variable entera.
Esta función (para un argumento double) se comporta como si estuviera implementada por el siguiente código (excepto por la libertad de no generar FE_INEXACT):
#include <cmath>#include <cfenv>#pragma STDC FENV_ACCESS ONdouble ceil(double x){double result;int save_round =std::fegetround();std::fesetround(FE_UPWARD); result =std::rint(x);//ostd::nearbyint std::fesetround(save_round);return result;}
[editar]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
[editar]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 los 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) |
Documentación de C para ceil |