C语言关于浮点型数据的"==“和”!="的理解
- 因为浮点型数据是不精确的。所以float和double数据是使用 “==“和”!=”,时容易出现一些意外的情况。
- 一般来说,都是把浮点型数据的== 、!=转换成>=和<=
- 原理 :
例如float a ,我们判断那他和50是否相等。那么只要
(50-0.001) < a < (50+0.001)
49.999< a < 50.001
我们就认为a==50。这里的0.001是一个精确度。是我们自己定义的。 - 具体来说。
首先定义一个宏EPSINON,这个宏就是精确度
#define EPSINON 0.001
那么判断句的写法就是:
if(a >= 50-EPSINON && a <= 50+EPSINON)