C++判断两个double数相等不能用==

  浮点数在内存中的存储有舍入误差,在计算机中用近似表示某个实数。比如,

double val1 = 4.0;
double val2 = 0.1;
double a = val1 - val2;

你认为a应该等于3.9,实际在计算机中它却是3.899999999999999999999。

  所以不能用==来判断两个double是否相等,而是,

const double eps = 1e-8;

if(abs(a-b) <= eps)  相等
else 不相等

你可能感兴趣的:(C++学习,笔记)