if(x>0.000001&&x<-0.000001) float x与0的比较

c中float精度问题 
float存储格式为: 
S         E          M 
1位符号位 8位指数  23位尾数 

转成数值即为:V=(-1)^S * 1.M * 2^(E-127) 

对于16.5转成二进制为00010000.1==>1.00001*2^4, 
那么在内存的表示为: 
符号位    指数4+127 = 131      尾数 
0          10000011               00001 000000000000000000 

在转换过程中由于需要往右移位, 可见对于float数整数部分越大,小数部分的精度就越低 
对float数来说有效数字约为7位(2^23约等于10^7),所以整数部分占的位数越多,小数部分 
的精度就越低,当整数部分超过9999999后小数部分已经完全无精度了

[+7]反= 0 0000111 B
[-7]反= 1 1111000 B
[+7]补= 0 0000111 B
[-7]补= 1 1111001 B
原文地址:https://www.cnblogs.com/wuyuans/p/3321544.html