rint, rintf, rintl

Kayan nokta değerini kayan nokta biçiminde en yakın tamsayıya yuvarlar.

Sözdizimi

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

Parametreler

x
Yuvarlanacak kayan nokta değeri.

Dönüş değeri

İşlevler, rint öğesine en yakın tamsayıyı xtemsil eden bir kayan nokta değeri döndürür. Yarı değerler, kayan nokta yuvarlama modunun geçerli ayarına göre yuvarlanır ve işlevlerle nearbyint aynıdır. İşlevlerin nearbyint aksine, rint sonuç bağımsız değişkenden farklı bir değere sahipse işlevler kayan nokta özel durumunu tetikler FE_INEXACT . Hata döndürme yok.

Giriş SEH özel durumu _matherr özel durumu
± INF, QNaN, IND yok yok
Normal Dışı EXCEPTION_FLT_UNDERFLOW yok

Açıklamalar

C++ aşırı yüklemeye izin verdiğinden, bu alma ve döndürme float ile long double değerlerinin rint aşırı yüklemelerini çağırabilirsiniz. C programında, bu işlevi çağırmak için tgmath.h makrosunu <kullanmıyorsanız, rint her zaman bir doublealır ve döndürür.>

tgmath.h>rint() makroyu <kullanırsanız, işlevin hangi sürümünün seçili olduğunu bağımsız değişkenin türü belirler. Ayrıntılar için bkz . Tür genel matematik .

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

İşlev C üst bilgisi C++ üst bilgisi
rint, rintf, rintl <math.h> <cmath>
rint Makro <tgmath.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

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

Ayrıca bkz.

Matematik ve kayan nokta desteği
ceil, ceilf, ceill
floor, floorf, floorl
fmod, fmodf
lrint, lrintf, lrintl, , llrint, llrintf, llrintl
lround, lroundf, lroundl, , llround, llroundf, llroundl
nearbyint, nearbyintf, nearbyintl
rint