为什么这 2 个 cout 语句给出相反的结果?
Why are these 2 cout statements giving opposite result?
我不明白为什么这些陈述给出的结果与我所说的不同
a==b 等同于 b==a
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout<<(pow(10,2)==(pow(8,2)+pow(6,2)))<<endl;
cout<<((pow(8,2)+pow(6,2))==pow(10,2))<<endl;
return 0;
}
输出是-
1
0
这是双重比较问题。您可以使用类似的东西:
cout<<(fabs(pow(10,2) - (pow(8,2)+pow(6,2))) < std::numeric_limits<double>::epsilon() ) <<endl;
cout<<(fabs((pow(8,2)+pow(6,2))-pow(10,2)) < std::numeric_limits<double>::epsilon() ) <<endl;
参考:
What is the most effective way for float and double comparison?
我不明白为什么这些陈述给出的结果与我所说的不同 a==b 等同于 b==a
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout<<(pow(10,2)==(pow(8,2)+pow(6,2)))<<endl;
cout<<((pow(8,2)+pow(6,2))==pow(10,2))<<endl;
return 0;
}
输出是-
1
0
这是双重比较问题。您可以使用类似的东西:
cout<<(fabs(pow(10,2) - (pow(8,2)+pow(6,2))) < std::numeric_limits<double>::epsilon() ) <<endl;
cout<<(fabs((pow(8,2)+pow(6,2))-pow(10,2)) < std::numeric_limits<double>::epsilon() ) <<endl;
参考: What is the most effective way for float and double comparison?