The floating point arithmetic provides four rounding modes that
affect the result of most floating point operations.
(These modes are defined in the header ieeefp.h):
FP_RN round to nearest representable number, tie -> even
FP_RP round toward plus infinity
FP_RM round toward minus infinity
FP_RZ round toward zero (truncate)
You can check the current rounding mode with the function
fp_rnd fpgetround(void); /* return current rounding mode */You can change the rounding mode for floating point operations with the function:
fp_rnd fpsetround(fp_rnd); /* set rounding mode, */ /* return previous */(fp_rnd is an enumeration type with the enumeration constants listed and described above. The values for these constants are in ieeefp.h.)
The default rounding mode is round-to-nearest. In C, floating point to integer conversions are always done by truncation, and the current rounding mode has no effect on these operations.
For more information on fpgetround and fpsetround, see fpgetround(S).