std::nearbyint, std::nearbyintf, std::nearbyintl
Definido en el archivo de encabezado <cmath>
|
||
float nearbyint ( float arg ); float nearbyintf( float arg ); |
(1) | (desde C++11) |
double nearbyint ( double arg ); |
(2) | (desde C++11) |
long double nearbyint ( long double arg ); long double nearbyintl( long double arg ); |
(3) | (desde C++11) |
double nearbyint ( TipoEntero arg ); |
(4) | (desde C++11) |
arg
a un valor entero en formato de punto flotante, usando el modo de redondeo actual.Contenido |
[editar] Parámetros
arg | - | Valor de punto flotante. |
[editar] Valor de retorno
El valor entero más cercano a arg
, según el modo de redondeo actual.
[editar] Manejo de errores
Esta función no está sujeta a ninguno de los errores especificados en math_errhandling.
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559):
- Nunca se genera FE_INEXACT.
- 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
La única diferencia entre std::nearbyint
y std::rint es que std::nearbyint
nunca genera FE_INEXACT.
Los valores de punto flotante representables más grandes son enteros exactos en todos los formatos de punto flotante estándar, por lo que std::nearbyint
nunca se desborda por sí solo; sin embargo, el resultado puede desbordar cualquier tipo de entero (incluido std::intmax_t), cuando se almacena en una variable entera.
Si el modo de redondeo actual es FE_TONEAREST, esta función redondea a par en la mitad de los casos (como rint, pero a diferencia de round).
[editar] Ejemplo
#include <iostream> #include <cmath> #include <cfenv> int main() { #pragma STDC FENV_ACCESS ON std::fesetround(FE_TONEAREST); std::cout << "redondeando al más cercano: \n" << "nearbyint(+2.3) = " << std::nearbyint(2.3) << " nearbyint(+2.5) = " << std::nearbyint(2.5) << " nearbyint(+3.5) = " << std::nearbyint(3.5) << '\n' << "nearbyint(-2.3) = " << std::nearbyint(-2.3) << " nearbyint(-2.5) = " << std::nearbyint(-2.5) << " nearbyint(-3.5) = " << std::nearbyint(-3.5) << '\n'; std::fesetround(FE_DOWNWARD); std::cout << "redondeando hacia abajo:\n" << "nearbyint(+2.3) = " << std::nearbyint(2.3) << " nearbyint(+2.5) = " << std::nearbyint(2.5) << " nearbyint(+3.5) = " << std::nearbyint(3.5) << '\n' << "nearbyint(-2.3) = " << std::nearbyint(-2.3) << " nearbyint(-2.5) = " << std::nearbyint(-2.5) << " nearbyint(-3.5) = " << std::nearbyint(-3.5) << '\n'; std::cout << "nearbyint(-0.0) = " << std::nearbyint(-0.0) << '\n' << "nearbyint(-Inf) = " << std::nearbyint(-INFINITY) << '\n'; }
Salida:
redondeando al más cercano: nearbyint(+2.3) = 2 nearbyint(+2.5) = 2 nearbyint(+3.5) = 4 nearbyint(-2.3) = -2 nearbyint(-2.5) = -2 nearbyint(-3.5) = -4 redondeando hacia abajo: nearbyint(+2.3) = 2 nearbyint(+2.5) = 2 nearbyint(+3.5) = 3 nearbyint(-2.3) = -3 nearbyint(-2.5) = -3 nearbyint(-3.5) = -4 nearbyint(-0.0) = -0 nearbyint(-Inf) = -inf
[editar] Véase tambié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) |
(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) |
Obtiene o establece la dirección redondeo (función) |
Documentación de C para nearbyint
|