关于float变量与零值的比较问题
float型变量和“零值”比较的方法:const float EPSINON = 0.000001;
if ((x >= - EPSINON) && (x <= EPSINON))
浮点型变量并不精确,其中EPSINON是允许的误差(即精度),所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式
但我在vs2008上用下面的代码测试了好几回,可以直接用“==”比较,结果都是“相等”的,求解释,我该怎么理解这件事儿呢
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstdlib> //用于暂停
#include <cctype>
#include <vector>
//#include <cstring> //用于处理C风格字符串
//#include <bitset>
//#include <stack>
#include <map>
#include<fstream>
//#include<algorithm>
//#define NDEBUG
using namespace std;
int main()
{
float a=0;
//float b=5.23;
if(a==0.0)
{
cout<<"相等"<<endl;
}
else
{
cout<<"不等"<<endl;
}
system("pause");
return 0;
}