2016-04-04 12 views

答えて

3

あなたは if (abs(result - expected) < 0.00001)

というか、絶対、エラーよりも、相対のための線に沿って何かを使用することができます

float relativeError = abs((A - B)/B); 
    if (relativeError <= maxRelativeError) 

は、詳細についてはこれを参照してください。 http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

+0

ただし、注意してください。 Bがゼロの場合、その "relativeError"計算が爆発します。一般的に、相対誤差を使用すると、ゼロは "ほぼ等しい"と正確にゼロの値だけを比較します。 –

-2
bool AreSame(double a, double b) 
{ 
    return fabs(a - b) < std::numeric_limits<double>::min(); 
} 
+2

これは同じではありません。たとえば '1e-40'と' 2e-40'という数字を取ります。これらは完全に二重として表現できますが、あなたのメソッドと同等です。 – Lanting

関連する問題