float的误差问题?#include iostream using namespace stdint main(){float a,b,ca 1.1b ab++//
float 的误差问题? #include< iostream > using namespace std; int main() { float a,b,c; a = 1.1; b = a; b++; //cout << b << endl; b--; if( a == b ) cout << "a == b " << endl; else cout << "a != b " << endl; return 0; } 为什么cout<< b << endl;前面的//去掉后就是a!=b.不去掉的话就是a==b???
[解决办法] 我用的code:block测试的结果是 加不加cout<< b << endl; 结果都是a!=b 个人认为是因为float的尾数部分左移或者右移之后会发生微小的变化,所以会发生a!=b的情况。
在float或double情况下,当需要判断两个值a、b是否相等时,基本是这么判断fabs(a - b) < 0.01等等 讲这些不知能不能帮上lz [解决办法]
C/C++ code
#include< iostream >using namespace std;int main(){ float a,b,c; a = 1.1; b = a; b++; //cout << b << endl; b--; if( a == b ) cout << "a == b " << endl; else cout << "a != b " << endl; return 0;} [解决办法]