fegetround
, fesetround
Gets or sets the current floating-point rounding mode.
Syntax
int fegetround(void);
int fesetround(
int round_mode
);
Parameters
round_mode
The rounding mode to set, as one of the floating-point rounding macros. If the value isn't equal to one of the floating-point rounding macros, the rounding mode isn't changed.
Return value
On success, fegetround
returns the rounding mode as one of the floating point rounding macro values. It returns a negative value if the current rounding mode can't be determined.
On success, fesetround
returns 0. Otherwise, a non-zero value is returned.
Remarks
Floating-point operations can use one of several rounding modes. These modes control which direction the results of floating-point operations are rounded toward when the results are stored. Here are the names and behaviors of the floating-point rounding macros defined in <fenv.h>:
Macro | Description |
---|---|
FE_DOWNWARD |
Round towards negative infinity. |
FE_TONEAREST |
Round towards the nearest. |
FE_TOWARDZERO |
Round towards zero. |
FE_UPWARD |
Round towards positive infinity. |
The default behavior of FE_TONEAREST
is to round results midway between representable values toward the nearest value with an even (0) least significant bit.
The current rounding mode affects these operations:
String conversions.
The results of floating-point arithmetic operators outside of constant expressions.
The library rounding functions, such as
rint
andnearbyint
.Return values from standard library mathematical functions.
The current rounding mode doesn't affect these operations:
The
trunc
,ceil
,floor
, andlround
library functions.Floating-point to integer implicit casts and conversions, which always round towards zero.
The results of floating-point arithmetic operators in constant expressions, which always round to the nearest value.
To use these functions, you must turn off floating-point optimizations that could prevent access by using the #pragma fenv_access(on)
directive prior to the call. For more information, see fenv_access
.
Requirements
Function | C header | C++ header |
---|---|---|
fegetround , fesetround |
<fenv.h> | <cfenv> |
For more compatibility information, see Compatibility.
See also
Alphabetical function reference
nearbyint
, nearbyintf
, nearbyintl
rint
, rintf
, rintl
lrint
, lrintf
, lrintl
, llrint
, llrintf
, llrintl
Feedback
Submit and view feedback for