C程序出现Floating point error :Divide by 0

来源:百度知道 编辑:UC知道 时间:2024/05/30 10:40:26
#include <math.h>
#include <stdio.h>
#define is 0.00283
#define iw 0.635
#define vs 17.95e-6
#define vw 0.659e-6
#define Prs 0.698
#define Prw 4.31
#define A 1
float FQC(float x,float y)
{ float e1=0.78,e2=0.05,es,c,z,T1,T3;
T1=x/100;
T3=y/100;
es=1/e1+1/e2-1;
c=pow (T1,4)-pow (T3,4);
z=A*c*5.67/es;
return(z);
}

float FQD(float x,float y)
{ float T1,e1=0.78,QD1,QD2,Tsky,c,z,Nu,L,Re,u=2,h;
Tsky=x-6;
Tsky=Tsky/100;
T1=y/100;
L=1;
c=pow (T1,4)-pow (Tsky,4);
QD1=e1*5.67*c;
Re=u*L/vs;
Nu=0.664*sqrt(Re)*pow (Prs,0.3333);
h=Nu*is/L;
QD2=h*A*(y-x);
z=QD1+QD2;
return(z);
}

float FQE(float x,float y)
{ float n=-0.4,T0=298.15,p=0.12,t,z;
t=fabs(x-T0);
z=y*p*A+n*t;
return(z);
}

float FT1(float x,float y,float z)
{ float s=30,Gr,L=1,a,j,thick=0.1,q,h,Nu,p;
p=z;
f

费了半天劲才查出来了

在执行
float FT1(float x,float y,float z) 时出的问题
for循环了几次 h变为零

教你个办法
在tc中 选break/watch 选add watch 填 h
然后按F7观察就行了

位数少了,在运算过程中出现舍去误差,把很小数舍去成0了。
把float改成double试一试