fesetround – установка правил округления
Синтаксис:
#include < fenv.h >
int fesetround (void);
Аргументы:
Код режима округления, который необходимо установить.
Возвращаемое значение:
0 – если новый режим установлен, иначе отличное от 0 значение.
Описание:
Функция устанавливает режим округления, используемый в функциях rint() и nearbyint().
Всего существует четыре разжима округления:
FE_DOWNWARD (код 1024) – округлять до наибольшего целого меньшего или равного округляемому значению.
FE_TONEAREST (код 0) – округлять до ближайшего целого числа, если округляемый аргумент отстоит от наибольшего и наименьшего целого на одну и ту же величину, то округления произведется до ближайшего большего целого числа. Этот режим установлен по умолчанию.
FE_TOWARDZERO (код 3072) – округлять до целого числа в сторону нуля. То есть, если число отрицательное округление будет происходить до наименьшего целого большего или равного округляемому значению. Если число положительное, то округление будет происходить до наибольшего целого меньшего или равного округляемому значению.
FE_UPWARD (код 2048) – округлять до наименьшего целого большего или равного округляемому значению.
Пример:
В примере числа 3,768 и -3.768 округляются функцией nearbyint() при различных режимах округления, устанавливаемых с помощью функции fesetround().
#include < stdio.h > //Для printf
#include < fenv.h > //Для fegetround
#include < math.h > //Для nearbyint
int main (void)
{
//Установка режима округления FE_ DOWNWARD и проверка
//выполнения установки
if (fesetround (FE_ DOWNWARD)==0)
{
//Вывод названия установленного режима
printf (“Режим округления: FE_ DOWNWARD\n”);
//Вывод значений для округления
printf (“ Аргументы : 3.768 -3.768\n”);
//Округление и вывод результата
printf (“ Округление: %.1f %.1f\n”,nearbyint (3.768), nearbyint (-3.768) );
}
//Установка режима округления FE_TONEAREST и проверка
//выполнения установки
if (fesetround (FE_TONEAREST)==0)
{
//Вывод названия установленного режима
printf (“Режим округления: FE_TONEAREST \n”);
//Вывод значений для округления
printf (“ Аргументы : 3.768 -3.768\n”);
//Округление и вывод результата
printf (“ Округление: %.1f %.1f\n”,nearbyint (3.768), nearbyint (-3.768) );
}
//Установка режима округления FE_TOWARDZERO и проверка
//выполнения установки
if (fesetround (FE_TOWARDZERO)==0)
{
//Вывод названия установленного режима
printf (“Режим округления: FE_TOWARDZERO \n”);
//Вывод значений для округления
printf (“ Аргументы : 3.768 -3.768\n”);
//Округление и вывод результата
printf (“ Округление: %.1f %.1f\n”,nearbyint (3.768), nearbyint (-3.768) );
}
//Установка режима округления FE_TONEAREST и проверка
//выполнения установки
if (fesetround (FE_UPWARD)==0)
{
//Вывод названия установленного режима
printf (“Режим округления: FE_UPWARD \n”);
//Вывод значений для округления
printf (“ Аргументы : 3.768 -3.768\n”);
//Округление и вывод результата
printf (“ Округление: %.1f %.1f\n”,nearbyint (3.768), nearbyint (-3.768) );
}
return 0;
}
| |
Результат:
Режим округления: FE_ DOWNWARD
Аргументы : 3.768 -3.768
Округление: 3.0 -4.0
Режим округления: FE_TONEAREST
Аргументы : 3.768 -3.768
Округление: 4.0 -4.0
Режим округления: FE_TOWARDZERO
Аргументы : 3.768 -3.768
Округление: 3.0 -3.0
Режим округления: FE_UPWARD
Аргументы : 3.768 -3.768
Округление: 4.0 -3.0
|
Смотри так же:
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
|