网站开发的项目经验,沈阳专业网站建设报价,网站短链接怎么做的,教育微网站建设在嵌入式软件中#xff0c;一般不建议将浮点数和0直接做比较#xff0c;例如#xff1a;
float a;
exp1. if (a 0)
exp2. if (a 0)
exp3. if (a 0)
exp4. if (a - 1 0)诸如此类#xff0c;都是不可取的#xff0c;这里就和浮点数在计算机内存中的表示方法有关…在嵌入式软件中一般不建议将浮点数和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)