C/C++中的浮点数运算
代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cfloat> 4 5 using namespace std; 6 7 int main(){ 8 float c = (1e15-1e-15-1e15)+1e-15;//运算结果为1e-15 9 if(c < 1e-12) 10 cout<<"zero"<<endl; 11 else 12 cout<<"no"<<endl; 13 14 if((1.0+DBL_EPSILON) != 1.0 && (1.0+DBL_EPSILON/2) == 1.0)//DEL_EPSILON为离1.0最近且大于1.0的浮点数与1.0的差值 15 cout<<"OK"<<endl; 16 17 return 0; 18 }
输出:
zero OK
分析:
由于浮点数运算时经常会产生一定误差,因此判断浮点数是否为0一般判断其绝对值是否小于某个非常小的数。