您的位置:首页 > 其它

float类型和0比较大小

2014-04-24 13:28 183 查看
转自:http://blog.csdn.net/fengrx/article/details/5349332

[cpp] view
plaincopy

if(x<0.000001&&x>-0.000001)  

 

原因: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后小数部分已经完全无精度了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C