float和double存储类型为什么是非精确存储

float和double存储类型为什么是非精确存储

计算机并不能直接地精确存储十进制小数

  1. 计算机使用二进制数来存储我们的数据,而二进制数并不能直接的精确存储十进制小数
  2. 我们人类常常使用十进制进行运算,所以可能没有注意到进制与进制之间并一定能精确转换,比如三进制的 0.1 ,在十进制中是0.33的无限循环,二进制和十进制也类似。
  3. 举个粒子,十进制的 0.6 相当于二进制的 11/101 ,我们来算一下看看是多少

在这里插入图片描述
4. 可见,在十进制中的 0.6 在二进制中是 0.10011001 的无限循环, float 和 double 使用的浮点数存储结构虽并不是直接的二进制数,但终归还是二进制数,也就无可避免地不能很好地兼容十进制小数。

拓展

  1. 学习链接1:IEEE-754浮点转换器
  2. 深入了解通道:float的精度和取值范围

个人笔记:探索时发现的特异点

  1. float 分成三个部分:1.符号位:1位; 2.指数位:8位; 3.尾数位:23位
  2. float 默认有个1不会写出来,转换时需要在尾数位前面加上
  3. float 的指数位为需要 -127 才能得到 float 真正的指数
  4. float 的指数位底数为 2
  5. float 存储负数时用的也是原码而非补码
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值