rint, rintf, rintl

Arrotonda un valore a virgola mobile all'intero più vicino nel formato a virgola mobile.

Sintassi

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

Parametri

x
Valore a virgola mobile da arrotondare.

Valore restituito

Le funzioni rint restituiscono un valore a virgola mobile che rappresenta l'intero più vicino a x. I valori a metà vengono arrotondati in base alle attuali impostazioni per la modalità di arrotondamento a virgola mobile, come accade con le funzioni nearbyint. A differenza delle funzioni nearbyint, le funzioni rint possono generare l'eccezione di virgola mobile FE_INEXACT se il risultato è diverso dall'argomento in termini di valore. Non viene restituito alcun errore.

Input Eccezione SEH Eccezione _matherr
± INF, QNaN, IND Nessuno Nessuno
Valori denormalizzati EXCEPTION_FLT_UNDERFLOW Nessuno

Osservazioni:

Dato che C++ consente l'overload, è possibile chiamare degli overload di rint che accettino e restituiscano valori float e long double . In un programma C, a meno che non si usi la <macro tgmath.h> per chiamare questa funzione, rint accetta sempre e restituisce un oggetto double.

Se si utilizza la <macro tgmath.h>rint() , il tipo dell'argomento determina quale versione della funzione è selezionata. Per informazioni dettagliate, vedere La matematica generica dei tipi.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Funzione Intestazione C Intestazione C++
rint, rintf, rintl <math.h> <cmath>
rint Macro <tgmath.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

// 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

Vedi anche

Supporto matematico e a virgola mobile
ceil, ceilf, ceill
floor, floorf, floorl
fmod, fmodf
lrint, lrintf, lrintl, llrint, llrintf, llrintl
lround, lroundf, lroundl, llround, llroundf, llroundl
nearbyint, nearbyintf, nearbyintl
rint