c语言float数值精度

http://zh.wikipedia.org/wiki/IEEE_754

http://cprogramsjzu.blog.sohu.com/81276949.html

得到的a和b的值都是12345678848.000000
为什么本应该有7个有效数字,这里却是前8位都一样呢???

能保证7位准确,并不是说第8位就肯定不准确。

具体解释:

计算机保存浮点数时,是把数看作a*2^b这样的形式,不是以10为底数,而是以2为底数。即将数转换成以2为底的“科学计数法”的形式,再由这个形式反转换成10进制形式,但数据又有位数限制,所以有些数转换成二进制计数法形式后位数超出了限制的位数,那么转换回来时得到的数就会与原数有偏差,不同的数这个偏差是不同的,有可能在小数点后第7位,也有可能在第8位,也有可能在其他位数,但能保证小数点第6位之前是正确的

Type  Exponent length Mantissa length 
float 8 bits          23 bits 
浮点数的有效位:23Bits,合24位 
其分辨率为:1/(2^24)=0.000,000,059,604644775390625 
=0.000,000,06 
即浮点数可表示的最小数的单位为0.000000059604644775390625; 
其他的数都由0.000000059604644775390625 * 2^X来表示的, 
12345678920 
12345678900 
000000059604644775390625 
=12345678848 
12345678848=0.000000059604644775390625 * 2^X 
具体计算略

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值