fegetround, fesetround - cppreference.com (original) (raw)

Defined in header <fenv.h>
int fesetround( int round ); (1) (since C99)
int fegetround(); (2) (since C99)
  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.

[edit] Parameters

[edit] 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.

[edit] Notes

The current rounding mode, reflecting the effects of the most recent fesetround, can also be queried with FLT_ROUNDS.

[edit] Example

#include <fenv.h> #include <math.h> #include <stdio.h>   // #pragma STDC FENV_ACCESS ON   void show_fe_current_rounding_direction(void) { printf("current rounding direction: "); switch (fegetround()) { case FE_TONEAREST: printf ("FE_TONEAREST"); break; case FE_DOWNWARD: printf ("FE_DOWNWARD"); break; case FE_UPWARD: printf ("FE_UPWARD"); break; case FE_TOWARDZERO: printf ("FE_TOWARDZERO"); break; default: printf ("unknown"); }; printf("\n"); }   int main(void) { /* Default rounding direction / show_fe_current_rounding_direction(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); / midway between two integers / printf("+12.5 -> %+4.1f\n", rint(+12.5)); / midway between two integers /   / Save current rounding direction. / int curr_direction = fegetround();   / Temporarily change current rounding direction. / fesetround(FE_DOWNWARD); show_fe_current_rounding_direction(); printf("+11.5 -> %+4.1f\n", rint(+11.5)); printf("+12.5 -> %+4.1f\n", rint(+12.5));   / Restore default rounding direction. */ fesetround(curr_direction); show_fe_current_rounding_direction();   return 0; }

Possible output:

current rounding direction: FE_TONEAREST +11.5 -> +12.0 +12.5 -> +12.0 current rounding direction: FE_DOWNWARD +11.5 -> +11.0 +12.5 -> +12.0 current rounding direction: FE_TONEAREST

[edit] References

[edit] See also