Share via


rint, rintf, rintl

將浮點值四捨五入為最接近的整數,並使用浮點格式。

語法

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

參數

x
要四捨五入的浮點值。

傳回值

rint 函式會傳回表示 x 的最接近整數的浮點值。 和 nearbyint 函式一樣,中間值會根據浮點四捨五入模式的目前設定進行四捨五入。 和 nearbyint 函式不一樣的是,若結果與引數的值不同,rint 函式可能會引發 FE_INEXACT 浮點例外狀況。 沒有傳回錯誤。

輸入 SEH 例外狀況 _matherr 例外
± INF、QNaN、IND none none
非正規數 EXCEPTION_FLT_UNDERFLOW none

備註

因為 C++ 允許多載,所以您可以呼叫採用並傳回 rintfloat 值的 long double 的多載。 在 C 程式中,除非您使用 < tgmath.h > 宏來呼叫此函式, rint 否則一律會採用 並傳 double 回 。

如果您使用 < tgmath.h >rint() 宏,引數的類型會決定選取哪一個函式版本。 如需詳細資訊,請參閱 類型泛型數學

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

需求

函式 C 標頭 C++ 標頭
rint, rintf, rintl <math.h> <cmath>
rint 宏觀 <tgmath.h>

如需相容性詳細資訊,請參閱相容性

範例

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

另請參閱

數學和浮點支援
ceil, ceilf, ceill
floor, floorf, floorl
fmod, fmodf
lrint, lrintf, lrintl, llrint, llrintf, llrintl
lround, lroundf, lroundl, llround, llroundf, llroundl
nearbyint, nearbyintf, nearbyintl
rint