std::fegetround,std::fesetround (3) Linux Manual Page
std::fegetround,std::fesetround – std::fegetround,std::fesetround
Synopsis
Defined in header <cfenv>
int fesetround( int round ) (1) (since C++11)
int fegetround() (2) (since C++11)
Manages the floating-point rounding direction.
1) Attempts to establish the floating-point rounding direction equal to the argument round, which is expected to be one of the floating_point_rounding_macros.
2) Returns the value of the floating_point_rounding_macro that corresponds to the current rounding direction.
Parameters
round – rounding direction, one of floating_point_rounding_macros
Return value
1) 0 on success, non-zero otherwise.
2) the floating_point_rounding_macro describing the current rounding direction or a negative value if the direction cannot be determined
Notes
The current rounding mode, reflecting the effects of the most recent fesetround, can also be queried with FLT_ROUNDS
See floating-point_rounding_macros for the effects of rounding.
Example
// Run this code
#include <cmath>
#include <cfenv>
#include <iostream>
int main()
{
#pragma STDC FENV_ACCESS ON
std::fesetround(FE_DOWNWARD);
std::cout << "rounding using FE_DOWNWARD: \n"
<< std::fixed
<< " 12.0 -> " << std::nearbyint(12.0) << '\n'
<< " 12.1 -> " << std::nearbyint(12.1) << '\n'
<< "-12.1 -> " << std::nearbyint(-12.1) << '\n'
<< " 12.5 -> " << std::nearbyint(12.5) << '\n'
<< " 12.9 -> " << std::nearbyint(12.9) << '\n'
<< "-12.9 -> " << std::nearbyint(-12.9) << '\n'
<< " 13.0 -> " << std::nearbyint(13.0) << '\n';
std::fesetround(FE_TONEAREST);
std::cout << "rounding using FE_TONEAREST: \n"
<< " 12.0 -> " << std::nearbyint(12.0) << '\n'
<< " 12.1 -> " << std::nearbyint(12.1) << '\n'
<< "-12.1 -> " << std::nearbyint(-12.1) << '\n'
<< " 12.5 -> " << std::nearbyint(12.5) << '\n'
<< " 12.9 -> " << std::nearbyint(12.9) << '\n'
<< "-12.9 -> " << std::nearbyint(-12.9) << '\n'
<< " 13.0 -> " << std::nearbyint(13.0) << '\n';
}
Output:
See also
nearbyint
nearbyintf
nearbyintl nearest integer using current rounding mode
(C++11)
(C++11)
(C++11)
rint
rintf
rintl
lrint
lrintf
lrintl
llrint
llrintf nearest integer using current rounding mode with
llrintl exception if the result differs
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
