Share via


rint, rintf, rintl

Redondea un valor de punto flotante al entero más cercano en el formato de punto flotante.

Sintaxis

double rint( double x );
float rintf( float x );
long double rintl( long double x );
#define rint(X) // Requires C11 or higher

float rint( float x );  // C++ only
long double rint( long double x );  // C++ only

Parámetros

x
Valor de punto flotante que se va a redondear.

Valor devuelto

Las funciones rint devuelven un valor de punto flotante que representa el entero más cercano a x. Los valores a medio camino se redondean en función de la configuración actual del modo de redondeo de puntos flotantes, al igual que las funciones nearbyint. Al contrario de lo que sucede con las funciones nearbyint, las funciones rint pueden generar la excepción de punto flotante FE_INEXACT si el valor del resultado es distinto del argumento. No se devuelve ningún error.

Entrada Excepción SEH Excepción de _matherr
± INF, QNaN, IND None None
Desnormalizados EXCEPTION_FLT_UNDERFLOW None

Comentarios

Puesto que C++ permite las sobrecargas, es posible llamar a las sobrecargas de rint 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, rint siempre toma y devuelve .double

Si usa la macro <tgmath.h>rint(), el tipo del argumento determina qué versión de la función se selecciona. 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

Función Encabezado C Encabezado C++
rint, rintf, rintl <math.h> <cmath>
rintMacro <tgmath.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// crt_rint.c
// Build with: cl /W3 /Tc crt_rint.c
// This example displays the rounded results of
// the floating-point values 2.499999, -2.499999,
// 2.8, -2.8, 2.5 and -2.5.

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x = 2.499999;
   float y = 2.8f;
   long double z = 2.5;

   printf("rint(%f) is %.0f\n", x, rint (x));
   printf("rint(%f) is %.0f\n", -x, rint (-x));
   printf("rintf(%f) is %.0f\n", y, rintf(y));
   printf("rintf(%f) is %.0f\n", -y, rintf(-y));
   printf("rintl(%Lf) is %.0Lf\n", z, rintl(z));
   printf("rintl(%Lf) is %.0Lf\n", -z, rintl(-z));
}
rint(2.499999) is 2
rint(-2.499999) is -2
rintf(2.800000) is 3
rintf(-2.800000) is -3
rintl(2.500000) is 3
rintl(-2.500000) is -3

Consulte también

Compatibilidad con matemáticas y 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