round
, , roundf
, roundl
Redondea un valor de punto flotante al valor entero más cercano.
Sintaxis
double round(
double x
);
float round(
float x
); // C++ only
long double round(
long double x
); // C++ only
float roundf(
float x
);
long double roundl(
long double x
);
#define round(X) // Requires C11 or higher
Parámetros
x
Valor de punto flotante que se va a redondear.
Valor devuelto
Las funciones round
devuelven un valor de punto flotante que representa el entero más cercano a x
. Los valores que se encuentran a medio camino se redondean en cero, independientemente de la configuración del modo de redondeo del punto flotante. No se devuelve ningún error.
Entrada | Excepción SEH | Excepción de _matherr |
---|---|---|
± QNaN, IND | None | _DOMAIN |
Comentarios
Puesto que C++ permite las sobrecargas, es posible llamar a las sobrecargas de round
que toman y devuelven los valores float
y long double
. En un programa de C, a menos que use la macro <tgmath.h>
para llamar a esta función, round
siempre toma y devuelve double
.
Si usa la round
macro de <tgmath.h>
, el tipo del argumento determina qué versión de la función está seleccionada. Consulte Matemáticas de tipo genérico para obtener más información.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Routine | Encabezado necesario |
---|---|
round , , roundf , roundl |
<math.h> |
round Macro |
<tgmath.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// Build with: cl /W3 /Tc
// This example displays the rounded
// results of floating-point values
#include <math.h>
#include <stdio.h>
int main()
{
printf("===== Round a float\n\n");
float floatValue = 2.4999999f; // float stores a value close to, but not exactly equal to, the initializer below. floatValue will contain 2.5 because it is the closest single precision value
printf("roundf(%.1000g) is %.1000g\n", floatValue, roundf(floatValue));
printf("roundf(%.1000g) is %.1000g\n", -floatValue, roundf(-floatValue));
// double stores a value close to, but not exactly equal to, the initializer below. The closest double value is just slightly larger.
double doubleValue = 2.4999999;
printf("\n===== Round a double\n\n");
printf("round(%.1000g) is %.1000g\n", doubleValue, round(doubleValue));
printf("round(%.1000g) is %.1000g\n", -doubleValue, round(-doubleValue));
// long double stores a value close to, but not exactly equal to, the initializer below. The closest long double value is just slightly larger.
long double longDoubleValue = 2.4999999L;
printf("\n===== Round a long double\n\n");
printf("roundl(%.1000g) is %.1000g\n", longDoubleValue, roundl(longDoubleValue));
printf("roundl(%.1000g) is %.1000g\n", -longDoubleValue, roundl(-longDoubleValue));
return 0;
}
===== Round a float
roundf(2.5) is 3
roundf(-2.5) is -3
===== Round a double
round(2.499999900000000163657887242152355611324310302734375) is 2
round(-2.499999900000000163657887242152355611324310302734375) is -2
===== Round a long double
roundl(2.499999900000000163657887242152355611324310302734375) is 2
roundl(-2.499999900000000163657887242152355611324310302734375) is -2
Vea también
Compatibilidad con cálculos matemáticos y el punto flotante
ceil
, , ceilf
, ceill
floor
, , floorf
, floorl
fmod
, fmodf
lrint
, lrintf
, lrintl
, llrint
, , llrintf
, llrintl
lround
, lroundf
, lroundl
, llround
, , llroundf
, llroundl
nearbyint
, , nearbyintf
, nearbyintl
rint
, , rintf
, rintl