The fegetround() function is defined in <cfenv> header file.
fegetround() prototype
int fegetround();
fegetround() Parameters
- None
fegetround() Return value
- On success, the fegetround() function returns the floating point rounding macro describing the current rounding direction.
- On failure it returns a negative value.
Macro | Description |
---|---|
FE_DOWNWARD | Round downward |
FE_TONEAREST | Round to nearest value |
FE_TOWARDZERO | Round towards zero |
FE_UPWARD | Round upward |
Example: How fegetround() function works?
#include <iostream>
#include <cmath>
#include <cfenv>
#pragma STDC FENV_ACCESS ON
using namespace std;
void print_current_rounding_direction()
{
cout << "Current rounding method: ";
switch (fegetround()) {
case FE_TONEAREST:
cout << "FE_TONEAREST";
break;
case FE_DOWNWARD:
cout << "FE_DOWNWARD";
break;
case FE_UPWARD:
cout << "FE_UPWARD";
break;
case FE_TOWARDZERO:
cout << "FE_TOWARDZERO";
break;
default:
cout << "unknown";
};
cout << endl;
}
int main(void)
{
print_current_rounding_direction();
cout << "6.2 -> " << rint(6.2) << endl;
cout << "18.7 -> " << rint(18.7) << endl;
fesetround(FE_UPWARD);
print_current_rounding_direction();
cout << "6.2 -> " << rint(6.2) << endl;
cout << "19.7 -> " << rint(19.7) << endl;
fesetround(FE_DOWNWARD);
print_current_rounding_direction();
cout << "6.2 -> " << rint(6.2) << endl;
cout << "19.7 -> " << rint(19.7) << endl;
return 0;
}
When you run the program, the output will be:
Current rounding method: FE_TONEAREST 6.2 -> 6 18.7 -> 19 Current rounding method: FE_UPWARD 6.2 -> 7 19.7 -> 20 Current rounding method: FE_DOWNWARD 6.2 -> 6 19.7 -> 19