今有一个文件abc.txt,内含一些数对,找出全部积为16!的数对,并输出。注意浮点数的比较方法。文件内容和输出样例为:
#include<iostream>
#include<fstream>
#include<sstream>
#include<cmath>
using namespace std;
int main(){
float sum1=1;
for(int i=1;i<=16;i++)
sum1=sum1*i;
cout<<sum1<<endl;
ifstream in("bbb.txt");
for(string s;getline(in,s);){
float a,sum=1;
for(istringstream sin(s);sin>>a;){
sum=sum*a;
if(fabs(sum/(1e+13)-sum1/(1e+13))<1e-5)
cout<<s<<endl;
}
}
}
在对浮点数的比较时,考虑到16!的比较大,采取除以e+13,再相减比较。