比较实数的大小时,由于一般情况下一个实数不能用有限位的二进制表示,所以会存在误差。当我们要比较二个实数是否相等时,不要使用==的比较运算符,而是用二个实数差的绝对值是否小于一个我们限定的值。
比如比较一个float型与0的大小,应该用
if ((x >= - EPSINON) && (x <= EPSINON)
来比较,这里的EPSINON可以设置为1e-6或以下。
比较实数的大小时,由于一般情况下一个实数不能用有限位的二进制表示,所以会存在误差。当我们要比较二个实数是否相等时,不要使用==的比较运算符,而是用二个实数差的绝对值是否小于一个我们限定的值。
比如比较一个float型与0的大小,应该用
if ((x >= - EPSINON) && (x <= EPSINON)
来比较,这里的EPSINON可以设置为1e-6或以下。