在嵌入式软件中,一般不建议将浮点数和0直接做比较,例如:
float a;
exp1. if (a == 0)
exp2. if (a >= 0)
exp3. if (a <= 0)
exp4. if (a - 1 == 0)
诸如此类,都是不可取的,这里就和浮点数在计算机内存中的表示方法有关系了,比如浮点数1.0f在内存中可能为0.99999xxx,并不是一个精确的1.0f,并且浮点数0.0f在也有可能为0.00000xxx,具体值是多少,可以在IAR中查看。因此直接做比较,可能会造成误判。
正确的做法应该是,用一个极小值来代替0.0f,如下:
#define FLOAT_ZERO 1e-9
float a;
exp1. if (a <= FLOAT_ZERO)
exp2. if (a >= FLOAT_ZERO)
exp3. if (a <= FLOAT_ZERO)
exp4. if (a - 1 <= FLOAT_ZERO)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。