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

C++での浮動小数点の比較


ここでは、C++を使用して2つの浮動小数点データを比較する方法を説明します。浮動小数点の比較は整数の比較とは異なります。

2つの浮動小数点値を比較するには、比較の精度を考慮する必要があります。たとえば、2つの数値が3.1428と3.1415の場合、精度0.01までは同じですが、その後は0.001のように同じではありません。

この基準を使用して比較するには、ある浮動小数点数を別の浮動小数点数から減算した後の絶対値を見つけ、その結果が精度値よりも小さいかどうかを確認します。これにより、それらが同等であるかどうかを判断できます。

#include <iostream>
#include <cmath>
using namespace std;
bool compare_float(float x, float y, float epsilon = 0.01f){
   if(fabs(x - y) < epsilon)
      return true; //they are same
      return false; //they are not same
}
int main() {
   float x, y;
   x = 22.0f/7.0f;
   y = 3.1415f;
   if(compare_float(x, y)){
      cout << "They are equivalent" << endl;
   } else {
      cout << "They are not equivalent" << endl;
   }
   if(compare_float(x, y, 0.001f)){
   cout << "They are equivalent" << endl;
   } else {
      cout << "They are not equivalent" << endl;
   }
}

出力

They are equivalent
They are not equivalent

  1. C++で複素数を使用したジオメトリ

    このセクションでは、C++でSTLの複合クラスを使用してポイントクラスを作成する方法を説明します。そして、それらをいくつかのジオメトリ関連の問題に適用します。複素数は、STL(#include )の複素数クラス内にあります。 ポイントクラスの定義 複合点をポイントにするには、complex の名前をpointに変更してから、xを複合クラスのreal()に変更し、yを複合クラスのimag()に変更します。したがって、ポイントクラスをシミュレートできます。 # include <complex> typedef complex<double> point; # defin

  2. C++の別のポイントを中心としたポイントの回転

    原点を中心とした点Xの回転は、反時計回りに角度θで行われます。- 原点反clRotateockwiseについてのXbyθ:X * Polar(1.0、θ)。 ここで、複素数の関数polarはヘッダーファイルで定義され、位相角と大きさを使用して複素数を見つけるために使用されます。polar(mag、angle)は複素数を返します。 点Yを中心とした点Xの回転 ポイントを別のポイントを中心に回転させるには、すべての座標の移動が特定の方向に発生する平行移動を使用します。 XをYを中心に回転させる手順。 XをYに変換すると、Yが新しい原点になります。これは、すべてのポイントから