请问StatData[i]==0.00这样的语句为什么经常“Floating Point Overflow”
uhian 2006-05-13 08:25:42 StatData为float类型的数组,其数据是从数据库中读取然后计算所得,代码如下:
//注:所有数组已经分配好内存
int RecCount=tbl->RecordCount;
int FdCount=tbl->Fields->Count;
//获得原始数据
tbl->Next();
for(int i=0;i<RecCount;++i)
{
for(int j=0;j<FdCount;++j)
{
if(tbl->Fields->Fields[j]->IsNull)
{
OriginalData[i][j]=0.00;
}
else
{
OriginalData[i][j]= tbl->Fields->Fields[j]->AsFloat;
}
}
tbl->Next();
}
//求和
for(int j=0;j<FdCount;++j)
{
TotalData[j]=0.00;
for(int i=0;i<RecCount;++i)
{
TotalData[j]=TotalData[j]+OriginalData[i][j];
}
}
//求百分比
for(int j=0;j<FdCount;++j)
{
for(int i=0;i<RecCount;++i)
{
// try
// {
if(TotalData[j]==0.00) //这句,经常提示“Floating Point Overflow”
{ //我跟踪了一下,发现比较之前,有时候值是
PercentData[i][j]=0.00; //7.*****E-74,然后就出错。
} //不明白,float的范围有那么大么?
else //这个值是怎么出现的?
{
PercentData[i][j]=OriginalData[i][j]/TotalData[j];
}
// }
// catch(...)
// {
// PercentData[i][j]=0.00;
// }
}
}
问题rt或者,看代码注释。