Namespaces
Variants
Views
Actions

fegetround, fesetround

From cppreference.com
< c‎ | numeric‎ | fenv
 
 
 
 
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

round - rounding direction, one of floating-point rounding macros

[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

Run this code
#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

  • C23 standard (ISO/IEC 9899:2024):
  • 7.6.3.1 The fegetround function (p: TBD)
  • 7.6.3.2 The fesetround function (p: TBD)
  • C17 standard (ISO/IEC 9899:2018):
  • 7.6.3.1 The fegetround function (p: TBD)
  • 7.6.3.2 The fesetround function (p: TBD)
  • C11 standard (ISO/IEC 9899:2011):
  • 7.6.3.1 The fegetround function (p: 212)
  • 7.6.3.2 The fesetround function (p: 212-213)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.6.3.1 The fegetround function (p: 193)
  • 7.6.3.2 The fesetround function (p: 193-194)

[edit] See also

rounds to an integer using current rounding mode
(function) [edit]
(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
rounds to an integer using current rounding mode with
exception if the result differs
(function) [edit]
C++ documentation for fegetround, fesetround
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/numeric/fenv/feround&oldid=169737"

AltStyle によって変換されたページ (->オリジナル) /