C代码中的浮点异常!

Hic*_*ick 4 c math

#include<stdio.h>
#include<math.h>

int main ()
{
    FILE *fp;
    fp=fopen("output","w");
    float t,y=0,x=0,e=5,f=1,w=1;
    for (t=0;t<10;t=t+0.01)
    {
        if( y==inf && y== nan) 
            break;
        fprintf(fp,"%lf\t%lf\n",y,x);
        y = y + ((e*(1 - x*x)*y) - x + f*cos(w*t))*t;
        x = x + y*t;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么输出会给出无限和NAN值?

fra*_*nkc 8

你的计算正在爆炸.只需查看为x和y打印出的值,您就会看到它们开始变得非常大,然后转换信息inf.因为你的条件是错误的,你最终会在计算中使用inf变成nan.


not*_*row 6

比较infnan通过isnan()isinf()功能进行比较,而不是这种方式.
%lf是的double,不是float.

而且,为了上帝的缘故,fclose()你的文件!(前X行是一些有意义的数字.)