fesetround() and fegetround() in C++ and their application
fesetround()
It sets the specified floating point rounding direction or the “current rounding direction” which is expected to be one of the floating point rounding macros.
It is used with rint(), nearbyint() and other rounding functions in C++.
Syntax: int fesetround( int round ); where round can be FE_TONEAREST, FE_DOWNWARD, FE_UPWARD, FE_TOWARDZERO Header File : cfenv Return : The fesetround() function returns 0 on success and the rounding direction is applied to the required number.
Errors and Exceptions : The function takes only FE_TONEAREST, FE_DOWNWARD, FE_UPWARD, FE_TOWARDZERO as arguments, otherwise it returns an error.
Application : fesetround() function can be used with rint(), nearbyint() and other rounding functions of the math header to apply the “current rounding direction”
// C program to illustrate // fesetround() function with rint() function #include <cfenv> #include <cmath> #include <iostream> using namespace std; // Driver Program int main() { double x = 3.7, result; // setting rounding direction to the nearest integer fesetround(FE_TONEAREST); result = rint(x); cout << result << endl; // setting rounding direction towards zero fesetround(FE_TOWARDZERO); result = rint(x); cout << result << endl; // setting rounding direction to DOWNWARD fesetround(FE_DOWNWARD); result = rint(x); cout << result << endl; // setting rounding direction to UPWARD fesetround(FE_UPWARD); result = rint(x); cout << result << endl; return 0; } |
Output:
4 3 3 4
fegetround()
It is used to obtain the value of the floating point rounding macro that corresponds to the current rounding direction. It is used with rint(), nearbyint() and other rounding functions in C++.
Syntax : int fegetround(); No parameter Header File : cfenv Return : The fegetround() function returns the floating point rounding macro describing the current rounding direction. Rounding Macros: 1.FE_DOWNWARD 2.FE_TONEAREST 3.FE_TOWARDZERO 4.FE_UPWARD
Errors and Exceptions :
- The function does not take any arguments, therefore returns an error if a parameter is passed
- If no rounding direction is specified using fesetround(), it returns the macro FE_TONEAREST
Application : fegetround() function can be used with rint(), nearbyint() and other rounding functions of the math header to get the “current rounding direction” using macros.
In this program we will be checking and printing the macro returned by the fegetround() function.
// C program to illustrate // fegetround() function with // rint() function using switch case #include <cfenv> #include <cmath> #include <iostream> #pragma STDC FENV_ACCESS ON using namespace std; void direction() { 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; } // Driver Program int main() { double x = 3.7; fesetround(FE_UPWARD); rint(x); direction(); fesetround(FE_DOWNWARD); rint(x); direction(); fesetround(FE_TOWARDZERO); rint(x); direction(); fesetround(FE_TONEAREST); rint(x); direction(); return 0; } |
Output:
FE_UPWARD FE_DOWNWARD FE_TOWARDZERO FE_TONEAREST
Recommended Posts:
- C++ bitset and its application
- unordered_multimap and its application
- is_permutation() in C++ and its application for anagram search
- isspace() in C/C++ and its application to count whitespace characters
- iscntrl() in C++ and its application to find control characters
- Synchronous Chatting Application using C++ boost::asio
- Chat application between two processes using signals and shared memory
- Full screen OpenCV / GtK application in C++ running on Raspberry PI
- Understanding ShellExecute function and it's application to open a list of URLs present in a file using C++ code
- Minimum cells to be flipped to get a 2*2 submatrix with equal elements
- Nested Loops in C++ with Examples
- _Find_first() function in C++ bitset with Examples
- _Find_next() function in C++ bitset with Examples
- Left-Right traversal of all the levels of N-ary tree
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.