2017-03-08 5 views
0

if文xが値付近にあるとき、私は数式を解くしようとしています

罪^ 2(x)は日焼け(x)は= 0.499999

C. でwhileループを使用してしかし、私私は0.5に丸めれば答えを印刷するプログラムしか得られませんでした。

For(x=0;x<=360;x=x+0.001) 
{ y=f(x) 
If(y **is near x**(e.g. Within 1 percent)) 
Do something etc. 
} 

値が十分に近い場合は、タスクを実行するためにコンピュータを伝える方法があります:これは私を導いた思考に、書き込みの方法があります。このif文のように? ありがとうございます。

+4

Google * epsilon *です。例えば、 'if(fabs(x-y)

+1

が近ければ、e、| yx |

+2

@WeatherVane:xが0.0002、yが0.0001の場合、テストは成立しますが、その差は50%です。 –

答えて

2

など、相対的な差を使用します。今、あなたのテストになる

#include <math.h> 

static inline double reldiff(double x, double y) 
{ 
    return fabs(x - y)/fmax(fabs(x), fabs(y)); 
} 

if (reldiff(x, y) < 0.01) // 1% as requested 
+0

これはうまくいった、ありがとう! – user138774

0

まあ、簡単な解決策は次のようになります。それは何本質的

if (y >= x-x/100 && y <= x+x/100) 
{ 
    [execute code...] 
} 

yが[Xマイナスxの1%]及び[Xプラスxの1%]の間である場合は、チェックです。大丈夫ですか?

関連する問題