Namespaces
Variants
Views
Actions

std::fegetround, std::fesetround

From cppreference.com
< cpp‎ | numeric‎ | fenv
Revision as of 22:32, 2 November 2012 by P12bot (Talk | contribs)

Template:ddcl list begin <tr class="t-dsc-header">

<td>
Defined in header <cfenv>
</td>

<td></td> <td></td> <tr class="t-dcl ">

<td >
int fesetround( int round )
</td>

<td > (1) </td> <td > (since C++11) </td> </tr> <tr class="t-dcl ">

<td >
int fegetround()
</td>

<td > (2) </td> <td > (since C++11) </td> </tr> Template:ddcl list end

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.

Contents

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

Example

#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

Template:cpp/numeric/math/dcl list nearbyintTemplate:cpp/numeric/math/dcl list rint