1. ホーム
  2. VS

DBL_EPSILON、FLT_EPSILONの使用方法について

2022-03-02 06:05:53


DBL_EPSILON と FLT_EPSILON は、主に単精度と倍精度の比較で使用されます。


double a = 0.5;
if (a == 0.5) //correct
	x++;

double b = sin(M_PI / 6.0);
if (b == 0.5) //error
	x++;




最初のものがより正しく、2番目のものは正しいかもしれないし、間違っているかもしれません。b=0.5の結果は、プロセッサ、コンパイラのバージョン、設定に依存します。例えば、Visual C++ 2010コンパイラでは、bは0.499999999999994とコンパイルされ実行されます。
正しい比較の仕方は、このようなものです。


double b = sin(M_PI / 6.0);
if (fabs(b - 0.5) < DBL_EPSILON)
	x++;




上記の例では EPSILONが最小の誤差となる。 それは EPSILON XがXと等しくない最小の正の数。