VC中2个浮点数比较大小
来源:百度知道 编辑:UC知道 时间:2024/06/19 04:13:39
从文件中读出数据,统计各个浮点数出现的次数。统计结果一半正确,一半错误。请高手帮忙看看!
数据是从24.83开始到25.23结束的20个浮点数。统计结果从24.83到25.02是正确的,但是后面的结果就错了。
void main()
{
fstream fMyfile;
fMyfile.open("C:\\result2.txt",ios::in);
if(!fMyfile){cout<<"error";
exit(-1);}
float avertemp[500];
int d2;
float d1,d4,d3,max,min;
int result[80];
memset(result,0,80);
min=100;
max=0;
for(int i=0;i<20;i++)
{
fMyfile>>avertemp[i];
d2=0;
if(avertemp[i]>max)
{max=avertemp[i];}
if(avertemp[i]<min)
{min=avertemp[i];}
}
cout<<max<<endl;
cout<<min<<endl;
fMyfile.close ();
for(int k=0;k<20;k++)
{
d2=0;
for(float d=min; d<=max+0.01;)
{
数据是从24.83开始到25.23结束的20个浮点数。统计结果从24.83到25.02是正确的,但是后面的结果就错了。
void main()
{
fstream fMyfile;
fMyfile.open("C:\\result2.txt",ios::in);
if(!fMyfile){cout<<"error";
exit(-1);}
float avertemp[500];
int d2;
float d1,d4,d3,max,min;
int result[80];
memset(result,0,80);
min=100;
max=0;
for(int i=0;i<20;i++)
{
fMyfile>>avertemp[i];
d2=0;
if(avertemp[i]>max)
{max=avertemp[i];}
if(avertemp[i]<min)
{min=avertemp[i];}
}
cout<<max<<endl;
cout<<min<<endl;
fMyfile.close ();
for(int k=0;k<20;k++)
{
d2=0;
for(float d=min; d<=max+0.01;)
{
我也有点晕.
大体看了一下,建议去比较字符串,或者转变成整数处理.
计算机本身不支持浮点类型,但是人支持,所以浮点是人加上去的.来回的加减容易出问题.
举例:
5.1-5.0正常我们预计的结果是0.1
但是计算机可以算出0.1000000000000012
建议先乘以100再比较,得出结果再处以100