double类型的数要取整为什么要加一个很小的数

c++程序设计中,度与弧度转换中有一条代码是这样的 iDeg=int(dDms+EPSILON). //度加一个很小的数
为什么要加一个很小的数?好像是和存储有关,有谁能解答一下嘛?

这是为了防止在浮点运算中由于存储限制而造成的误差。在程序设计中,一般都不直接判断两个浮点数是否相等,if x==y,而是采用两个浮点数的差是否小于一个很小的数EPSILON,当两数的差别小于EPSILON时就认为两个浮点数是相等的。设想正确答案是一个整数,但是由于浮点运算和存储造成的误差使得答案比标准值小了一丁点儿,if x==y就会判定不是,而if abs(x-y)<EPSILON就仍可以认定x与y是相等的。
温馨提示:答案为网友推荐,仅供参考
相似回答