# std::fegetround, std::fesetround

From cppreference.com
< cpp‎ | numeric‎ | fenv

Defined in header `<cfenv>` |  |
int fesetround( int round ) | (1) | (since C++11)
int fegetround() | (2) | (since C++11)

Manages the floating-point rounding direction.

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.

### Parameters

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

### 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

### Notes

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

See floating-point rounding macros for the effects of rounding.

### Example

Run this code

    #include <cmath>
    #include <cfenv>
    #include <iostream>

    int main()
    {
        #pragma STDC FENV_ACCESS ON
        std::fesetround(FE_DOWNWARD);
        std::cout << "rounding using FE_DOWNWARD: \n" << std::fixed
                  << " 12.0 ->  " << std::nearbyint(12.0) << '\n'
                  << " 12.1 ->  " << std::nearbyint(12.1) << '\n'
                  << "-12.1 -> " << std::nearbyint(-12.1) << '\n'
                  << " 12.5 ->  " << std::nearbyint(12.5) << '\n'
                  << " 12.9 ->  " << std::nearbyint(12.9) << '\n'
                  << "-12.9 -> " << std::nearbyint(-12.9) << '\n'
                  << " 13.0 ->  " << std::nearbyint(13.0) << '\n';
        std::fesetround(FE_TONEAREST);
        std::cout << "rounding using FE_TONEAREST: \n"
                  << " 12.0 ->  " << std::nearbyint(12.0) << '\n'
                  << " 12.1 ->  " << std::nearbyint(12.1) << '\n'
                  << "-12.1 -> " << std::nearbyint(-12.1) << '\n'
                  << " 12.5 ->  " << std::nearbyint(12.5) << '\n'
                  << " 12.9 ->  " << std::nearbyint(12.9) << '\n'
                  << "-12.9 -> " << std::nearbyint(-12.9) << '\n'
                  << " 13.0 ->  " << std::nearbyint(13.0) << '\n';
    }

Output:

    rounding using FE_DOWNWARD:
     12.0 ->  12.000000
     12.1 ->  12.000000
    -12.1 -> -13.000000
     12.5 ->  12.000000
     12.9 ->  12.000000
    -12.9 -> -13.000000
     13.0 ->  13.000000
    rounding using FE_TONEAREST:
     12.0 ->  12.000000
     12.1 ->  12.000000
    -12.1 -> -12.000000
     12.5 ->  12.000000
     12.9 ->  13.000000
    -12.9 -> -13.000000
     13.0 ->  13.000000

### See also

nearbyint nearbyintf nearbyintl (C++11)(C++11)(C++11) | nearest integer using current rounding mode (function)
rint rintf rintl lrint lrintf lrintl llrint llrintf llrintl (C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) | nearest integer using current rounding mode with exception if the result differs (function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/fenv/feround&oldid=95625"