赞
踩
浮点数在内存中的存储有舍入误差,在计算机中用近似表示某个实数。比如,
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 不相等
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。