DAY3 浮点数存储问题

        Java浮点类型分两类,单精度(float)的存储占4字节,与整形(int)相同,而双精度(double)的存储占8字节,与长整形(long)相同。但float的精度并不比int类型的精度高,其原因在于浮点数存储方式。

      浮点数是通过科学计数法来存储的,无论是单精度还是双精度在存储中都分为三个部分:

  1. 符号位(Sign) : 0代表正,1代表为负
  2. 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
  3. 尾数部分(Mantissa):尾数部分 ,表示有效数字

      比如十进制的3.0,二进制就是0011.0 就可以写成(-1)^0*1.1*2^1 
      比如十进制的-3.0,二进制就是-0011.0 就可以写成(-1)^1*1.1*2^1 
      float类型有一个符号位(S),有8个指数位(E),和23个有效数字位(M)
      double类型有一个符号位(S),有11个指数位(E),和52个有效数字位(M)

      而计算机中用二进制表示科学记数法,所以不能精确表示某些10进制小数,所以浮点数相较于整形丢失了一些精度。

 

   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值