林锐博士在《高质量C++编程指南》中说过:“不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式”,因为那是“隐含错误的写法”。应该设法转化成下面这样的写法:
-------------------------------
const float EPSINON = 0.00001; //精度限制
if((x >= -EPSINON) && (x <= EPSINON)) //表示x为“零值”
-------------------------------
刚看到的时候没太在意,因为感觉平时编程极少会遇到要比较两个浮点值是否相等的情况。后来得空一想,又想不明白这样写为什么是错