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.
Требования
Function | Заголовок 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
llrint
lrintl
llrintf
,llrintl
lround
, , lroundf
llround
lroundl
llroundf
,llroundl
nearbyint
, , nearbyintf
nearbyintl
rint