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