浮点数有限制的精度,涉及浮点数的计算会导致舍入误差。因此两个浮点数之间的相等性测试是不可靠的。如:
double x=1.0-0.1-0.1-0.1-0.1-0.1;
这里不完全是0.5,但非常接近0.5.所以,可以通过比较两个数之间的差距是不是小于一个临界条件来比较他们是否足够接近。如:|x-y|<epsilon,epsilon是一个非常小的数值(即为高数中的无穷小)如:
const double EPSLION=IE-14;
double x=1.0-0.1-0.1-0.1-0.1-0.1;
if(abs(x-0.5)<EPSLION)
cout<<“x is approximately 0.5”<<endl;
将显示:
x is appromately 0.5
cmath库中的函数abs(a)可以用来返回一个数a的绝对值
c++两个浮点值的相等性测试
最新推荐文章于 2024-05-11 10:07:53 发布