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 нет нет
Денормализованные числа EXCEPTION_FLT_UNDERFLOW нет

Замечания

Поскольку C++ допускает перегрузку, можно вызывать перегрузки rint , которые принимают и возвращают значения float и 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