如果x接近某个值时为Statement

时间:2017-03-08 21:21:25

标签: c if-statement for-loop floating-point

我正在尝试解决数值方程式:

sin ^ 2(x)tan(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语句中? 谢谢。

2 个答案:

答案 0 :(得分:3)

使用相对差异,例如:

#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

答案 1 :(得分:0)

嗯,一个简单的解决方案就是。

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

它的作用基本上是检查y是否在[x减去x的1%]和[x加{1}}的1%之间。应该工作正常。