Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::fegetround,std::fesetround

      From cppreference.com
      <cpp‎ |numeric‎ |fenv
       
       
       
      Floating-point environment
      Functions
      fegetroundfesetround
      (C++11)(C++11)
      (C++11)(C++11)
      Macro constants
      (C++11)
       
      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 argumentround, which is expected to be one of thefloating point rounding macros.
      2) Returns the value of thefloating point rounding macro that corresponds to the current rounding direction.

      Contents

      [edit]Parameters

      round - rounding direction, one offloating point rounding macros

      [edit]Return value

      1)0 on success, non-zero otherwise.

      2) Thefloating 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 recentfesetround, can also be queried withFLT_ROUNDS.

      Seefloating-point rounding macros for the effects of rounding.

      [edit]Example

      [edit]
      Run this code
      #include <cfenv>#include <cmath>#include <iomanip>#include <iostream>#include <utility>// #pragma STDC FENV_ACCESS ON int main(){staticconstexprstd::pair<constchar*,constdouble> samples[]{{" 12.0",12.0},{" 12.1",12.1},{"-12.1",-12.1},{" 12.5",12.5},{"-12.5",-12.5},{" 12.9",12.9},{"-12.9",-12.9},{" 13.0",13.0}}; std::cout<<"│ sample │  FE_DOWNWARD  │   FE_UPWARD   │ FE_TONEAREST  │ FE_TOWARDZERO │\n"; for(constauto&[str, fp]: samples){std::cout<<"│ "<<std::setw(6)<< str<<" │  ";for(constint dir:{FE_DOWNWARD,FE_UPWARD,FE_TONEAREST,FE_TOWARDZERO}){            std::fesetround(dir);std::cout<<std::setw(10)<<std::fixed<<std::nearbyint(fp)<<"   │  ";}std::cout<<'\n';}}

      Output:

      │ sample │  FE_DOWNWARD  │   FE_UPWARD   │ FE_TONEAREST  │ FE_TOWARDZERO ││   12.0 │   12.000000   │   12.000000   │   12.000000   │   12.000000   ││   12.1 │   12.000000   │   13.000000   │   12.000000   │   12.000000   ││  -12.1 │  -13.000000   │  -12.000000   │  -12.000000   │  -12.000000   ││   12.5 │   12.000000   │   13.000000   │   12.000000   │   12.000000   ││  -12.5 │  -13.000000   │  -12.000000   │  -12.000000   │  -12.000000   ││   12.9 │   12.000000   │   13.000000   │   13.000000   │   12.000000   ││  -12.9 │  -13.000000   │  -12.000000   │  -13.000000   │  -12.000000   ││   13.0 │   13.000000   │   13.000000   │   13.000000   │   13.000000   │

      [edit]See also

      (C++11)(C++11)(C++11)
      nearest integer using current rounding mode
      (function)[edit]
      (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)[edit]
      C documentation forfegetround,fesetround
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/fenv/feround&oldid=150982"

      [8]ページ先頭

      ©2009-2025 Movatter.jp