Главная    Разработка ПО    функции языка Си

Описание функций языка Си

" R "

remainder, remainderf, remainderl 

remove 

rename 

rewind 

remquo,remquo,remquo 

round,roundf,roundl 

rint,rintf,rintl 

All | _ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

rint, rintf, rintl – округление до ближайшего целого

Синтаксис:

#include < math.h >

double rint (double x);
float rintf (float x);
long double rintl (long double x);

Аргументы:

x – число, которое необходимо округлить.

Возвращаемое значение:

Округленный аргумент.

Описание:

Функции округляют аргумент x до ближайшего целого числа используя установленные в системы правила округления (смотри функции fgetround(), fsetround() ). работа этих функций похожа на работу функций nearbyint. Но в функциях rint, rintf, rintl если полученный результат отличается от аргумента, то будет сгенерирована исключительная ситуация (exception) при выполнении операции с плавающей точкой: inexact (неточный результат).

Причем в функции rintf аргумент и возвращаемое значение задаются типом float, точность которого не меньше шести значащих десятичных цифр, а разрядность – 32.

В функции rint аргумент и возвращаемое значение задаются типом double, точность которого не меньше десяти значащих десятичных цифр, а разрядность – 64.

В функции rintl аргумент и возвращаемое значение задаются типом long double, точность которого не меньше десяти значащих десятичных цифр, а разрядность – 80.

Пример:

В примере число 7.2 округляется с помощью функций rint и nearbyint, а затем округляется число 7.0 с помощью функций rint. После каждого округления проверяется наличие исключительной ситуации (exception) inexact (неточный результат). Результаты работы функций округления и наличие/отсутствие исключительных ситуаций выводятся на консоль.


#include < stdio.h >  //Для printf
#include < math.h >   //Для rint, nearbyint
#include < fenv.h >   //Для feclearexcept, fetestexcept

int main (void)
{    
   //Переменная в которую будет записываться признак наличия
   //исключительной ситуации
   int x=0; 

   //==============================================

   //Сброс признаков произошедших исключительных ситуаций
   feclearexcept (FE_ALL_EXCEPT);
      
   //Округление числа c помощью nearbyint и вывод результата на консоль
   printf (“nearbyint: аргумент 7.2, округление: %.1f\n“,nearbyint(7.2));

   //Проверяем, произошла ли исключительная ситуация
   x=fetestexcept (FE_INEXACT);
   //Выводим отчет об исключительной ситуации на консоль
   if (x==0) {puts (“     exception inexact отсутствует”);}
   else {puts (“     exception inexact зафиксирован”);}

   //==============================================

   //Сброс признаков произошедших исключительных ситуаций
   feclearexcept (FE_ALL_EXCEPT);
      
   //Округление числа c помощью rint и вывод результата на консоль
   printf (“\nrint: аргумент 7.2, округление: %.1f\n“,rint(7.2));

   //Проверяем, произошла ли исключительная ситуация
   x=fetestexcept (FE_INEXACT);
   //Выводим отчет об исключительной ситуации на консоль
   if (x==0) {puts (“     exception inexact отсутствует”);}
   else {puts (“     exception inexact зафиксирован”);}

   //==============================================

   //Сброс признаков произошедших исключительных ситуаций
   feclearexcept (FE_ALL_EXCEPT);
      
   //Округление числа c помощью rint и вывод результата на консоль
   printf (“rint: аргумент 7.0, округление: %.1f\n“,rint(7.0));

   //Проверяем, произошла ли исключительная ситуация
   x=fetestexcept (FE_INEXACT);
   //Выводим отчет об исключительной ситуации на консоль
   if (x==0) {puts (“     exception inexact отсутствует”);}
   else {puts (“     exception inexact зафиксирован”);}

   return 0;
}

Результат:

nearbyint: аргумент 7.2, округление: 7.0
      exception inexact отсутствует

rint: аргумент 7.2, округление: 7.0
      exception inexact зафиксирован

rint: аргумент 7.0, округление: 7.0
      exception inexact отсутствует



Смотри так же:

ceil, ceilf, ceill
floor, floorf, floorl
round, roundf, roundl
lround, lroundf, lroundl
llround, llroundf, llroundl
trunc, truncf, truncl
modf, modff, modfl
nearbyint, nearbyintf, nearbyintl
rint, rintf, rintl
fegetround
fesetround
lrint, lrintf, lrintl
llrint, llrintf, llrintl


Яндекс.Метрика

Рейтинг@Mail.ru