float 精度 问题

float 组成结构: 1 bit 符号位 + 8 bit 指数位 + 23 bit 尾数      

指数位使用补码,(-128 ~ 127)

尾数位使用科学计数法: 默认一位为1,不计算在 23 位范围之内,  2^23 = 8388608          2^24 = 16777216 

如果 一个数为16777217,用float 表示则会出现精度损失,所以 float 的精度保障7位,当小于16777216 ,可以保障8位

 

学习float的时候,看到了补码,顺带复习一下:

  • 原码:正数是其二进制本身;负数是符号位为1,数值部分取X绝对值的二进制。
  • 反码:正数的反码原码相同;负数是符号位为1,其它位是原码
  • 补码:正数的补码原码反码相同;负数是符号位为1,其它位是原码,未位加1。
  • :将符号位取补码(不区分正负)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值