float的精确度是7位,为什么与‘零’比较时 0.00001只是5位?解决方法

float的精确度是7位,为什么与‘零’比较时 0.00001只是5位????
为什么零值不用0.000001或0.0000001

------解决方案--------------------
根据需求确定要达到的精度误差就行了。 记得林锐博士的文章中有讲浮点数的比较。

比如你的误差允许范围为千分之一,那和0.0001比较就好了。
------解决方案--------------------
因为赋值粘贴,所以网上到处都是0.00001。这题主要意思就是,不能和0.0直接==。
------解决方案--------------------
楼上说的都对。。。。
------解决方案--------------------
其实和0比较完全可以用==0.0f,不相信的话可以自己做测试,有关浮点的误差问题总是被人放大,实际上两个浮点数是可以用==直接判断的
------解决方案--------------------
参考“浮点表示法”←百度搜
C:\Program Files\Microsoft Visual Studio 10.0\VC\include\float.h
C/C++ code
……
#define FLT_DIG         6                       /* # of decimal digits of precision */
#define FLT_EPSILON     1.192092896e-07F        /* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define FLT_GUARD       0
#define FLT_MANT_DIG    24                      /* # of bits in mantissa */
#define FLT_MAX         3.402823466e+38F        /* max value */
#define FLT_MAX_10_EXP  38                      /* max decimal exponent */
#define FLT_MAX_EXP     128                     /* max binary exponent */
#define FLT_MIN         1.175494351e-38F        /* min positive value */
#define FLT_MIN_10_EXP  (-37)                   /* min decimal exponent */
#define FLT_MIN_EXP     (-125)                  /* min binary exponent */
#define FLT_NORMALIZE   0
#define FLT_RADIX       2                       /* exponent radix */
#define FLT_ROUNDS      1                       /* addition rounding: near */
……

------解决方案--------------------
其实需要看你自己的精度要求
 浮点数与 任何整数a 比较时:
 if(f < a+0.0000001 && f > a-0.0000001) //具体后面几个0看你自己的精度确定
 {
......
 }
 
------解决方案--------------------
需要看你的精度要求
------解决方案--------------------
探讨
需要看你的精度要求

------解决方案--------------------
一般直接0比较就行了,被某人放大危害了
------解决方案--------------------
探讨

因为赋值粘贴,所以网上到处都是0.00001。这题主要意思就是,不能和0.0直接==。

------解决方案--------------------
浮点数的误差在于其计算的时候,而不是赋值的时候。
------解决方案--------------------
参考“浮点表示法”←百度搜