fegetround, fesetround
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at fegetround, fesetround2.
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 is not equal to one of the floating-point rounding macros, the rounding mode is not 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 control which direction the results of floating-point operations are rounded toward when the results are stored. These 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 does not 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 additional compatibility information, see Compatibility.
See Also
Alphabetical Function Reference
nearbyint, nearbyintf, nearbyintl
rint, rintf, rintl
lrint, lrintf, lrintl, llrint, llrintf, llrintl