6.5.9 fegetround Function

Gets the current rounding direction.

Attention: This function is implemented only by MPLAB XC32 C compilers when using a device with a FPU.

Include

<fenv.h>

Prototype

int fegetround(void);

Return Value

This function returns the a value representing the current floating-point rounding direction, which can be compared to the rounding-direction macros.

Example

See the notes at the beginning of this chapter or section for information on using printf() or scanf() (and other functions reading and writing the stdin or stdout streams) in the example code.

#include <fenv.h>
#include <stdio.h>
#include <assert.h>

int main(void)
{
  int save_round, setround_ok;
  volatile double x, y=1E30;

  save_round = fegetround();            // save the rounding state
  setround_ok = fesetround(FE_UPWARD);
  assert(setround_ok == 0);
  x = 1 / y;
  printf("the small result rounded up is %.40f\n", x);
  setround_ok = fesetround(FE_DOWNWARD);
  assert(setround_ok == 0);
  x = 1 / y;
  printf("the small result rounded down is %.40f\n", x);
  fesetround(save_round);               // restore the rounding state
}

Example Output

the small result rounded up is 0.0000000000000000000000000000010000000001
the small result rounded down is 0.0000000000000000000000000000009999999999