阅读此代码
#include<iostream>
using namespace std;
int main(void){
if(0.1 + 0.2 == 0.3){
cout<<"eq"<<endl;
}else{
cout<<"!eq"<<endl;
}
}
如果只运用数学常识进行判断,可以推测代码会输出的是eq;然而实际上由于浮点数精度问题(与浮点数的存储方式有关),实际上会输出的是!eq。
如果坚持要进行这种判断,只能进行一个近似操作:
#include<iostream>
#include<cmath>
using namespace std;
int main(void){
if(abs((0.1 + 0.2) - 0.3) < 0.0001){
cout<<"eq"<<endl;
}else{
cout<<"!eq"<<endl;
}
}
其中的0.0001可根据需要的精度调整。