给你一段N年前的程序,不过因为没有注释,现在连我也看不懂了。
longdo
uble TFormMain::GetVarAbsDev(AnsiString VarName,int DataNoAdd,bool BolStdev)
{
int ix,DataSum;
AnsiString StrX;
longdo
uble d1,d2,dt1,dt2,d3;
if(bError)
return 0;
StrX=VarName;
dt2=GetVarSum(VarName,DataNoAdd,1);
DataSum=0;
d1=d2=0;
for(ix=0;
ix<=GetRangeMin(StrX,DataNoAdd,true)-GetRangeMin(StrX,DataNoAdd);
ix++)
{
bError=false;
dt1=GetVarData(StrX,ix,DataNoAdd);
if(bError==false)
{
d3=fabsl(dt1-dt2);
d1+=d3;
d2+=(d3*d3);
DataSum++;
}
}
bError=false;
if(DataSum<2)
{
bError=true;
return 0;
}
d1/=DataSum;
d2=sqrtl(d2/(DataSum-1)/DataSum);
if(BolStdev==true)
return d2;
else
return d1;
}