C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++のFesetround()およびfegetround()


ここでは、C ++のfesetround()メソッドとfegetround()メソッドを確認します。これらのメソッドは、cfenvライブラリにあります。

fesetround()メソッドは、指定された浮動小数点の丸め方向を現在の丸め方向に設定するために使用されます。これは、rint()、nearbyint()、およびC++の他のいくつかの丸め関数で使用されます。

構文は次のようになります-

int fesetround(int round);

丸めは、FE_TONEAREST、FE_DOWNWARD、FE_UPWARDなどのいずれかになります。この関数は、必要な方法で丸め方向が正常に適用されると、0を返します。

#include <cfenv >
#include <cmath>
#include <iostream>
using namespace std;
main() {
   double x = 4.7, ans;
   fesetround(FE_TONEAREST); //round to nearest integer
   ans = rint(x);
   cout << "Nearest Integer is: " << ans << endl;
   fesetround(FE_TOWARDZERO); //rounding towards zero
   ans = rint(x);
   cout << "Rounding towards 0, value is: " << ans << endl;
   fesetround(FE_DOWNWARD); //rounding to downwards
   ans = rint(x);
   cout << "Nearest Integer below the number: " << ans << endl;
   fesetround(FE_UPWARD); //rounding to upwards
   ans = rint(x);
   cout << "Nearest Integer above the number: " << ans << endl;
}

出力

Nearest Integer is: 5
Rounding towards 0, value is: 4
Nearest Integer below the number: 4
Nearest Integer above the number: 5

ここで、fegetround()メソッドを使用して、現在の丸め方向に対応する浮動小数点丸めマクロを取得する方法を見てみましょう。この関数は、rint()、nearbyint()、およびC++の他のいくつかの丸めメソッドで使用されます。

構文は次のようになります-

int fegetround();

これにより、浮動小数点の丸めマクロに対応する数値が返されます。

  • FE_DOWNWARD
  • FE_TONEAREST
  • FE_TOWARDZERO
  • FE_UPWARD

#include <cfenv >
#include <cmath>
#include <iostream>
using namespace std;
void float_direction() {
   switch (fegetround()) {
      case FE_TONEAREST:
         cout << "Macro is: FE_TONEAREST";
      break;
      case FE_DOWNWARD:
         cout << "Macro is: FE_DOWNWARD";
      break;
      case FE_UPWARD:
         cout << "Macro is: FE_UPWARD";
      break;
      case FE_TOWARDZERO:
         cout << "Macro is: FE_TOWARDZERO";
      break;
      default:
         cout << "unknown";
   };
   cout << endl;
}
main() {
   double x = 4.7, ans;
   fesetround(FE_TONEAREST); //round to nearest integer
   ans = rint(x);
   cout << "Nearest Integer is: " << ans << endl;
   float_direction();
   fesetround(FE_TOWARDZERO); //rounding towards zero
   ans = rint(x);
   cout << "Rounding towards 0, value is: " << ans << endl;
   float_direction();
   fesetround(FE_DOWNWARD); //rounding to downwards
   ans = rint(x);
   cout << "Nearest Integer below the number: " << ans << endl;
   float_direction();
   fesetround(FE_UPWARD); //rounding to upwards
   ans = rint(x);
   cout << "Nearest Integer above the number: " << ans << endl;
   float_direction();
}

出力

Nearest Integer is: 5
Macro is: FE_TONEAREST
Rounding towards 0, value is: 4
Macro is: FE_TOWARDZERO
Nearest Integer below the number: 4
Macro is: FE_DOWNWARD
Nearest Integer above the number: 5
Macro is: FE_UPWARD

  1. C ++のfmax()およびfmin()

    このセクションでは、C ++でfmax()とfmin()を変換する方法を説明します。 fmax()とfmin()はcmathヘッダーファイルにあります。 この関数は、float型またはdoubleまたはlong doubleの2つの値を取り、それぞれfmax()およびfmin()を使用して最大値または最小値を返します。 floatとdoubleを比較したい場合や、long doubleとfloatを比較したい場合など、引数の型が異なる場合、関数はその値に暗黙的に型キャストし、対応する値を返します。 例 #include <cmath> #include <iomanip&

  2. C ++のdelete()とfree()

    delete() 削除演算子は、メモリの割り当てを解除するために使用されます。ユーザーには、この削除演算子によって作成されたポインター変数の割り当てを解除する権限があります。 C++言語での削除演算子の構文は次のとおりです delete pointer_variable; 割り当てられたメモリのブロックを削除する構文は次のとおりです。 delete[ ] pointer_variable; これは、C++言語での削除演算子の例です 例 #include <iostream> using namespace std; int main () {    in