我正在尝试解决数值方程式:
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语句中? 谢谢。
答案 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%之间。应该工作正常。