float类型

        float类型遵循IEEE754标准,该标准为32位浮点数规定了二进制表示形式。IEEE754采用二进制的科学计数法来表示浮点数。对于float浮点数,用1位表示数字的符号(浮点数正负性,0正1负),8位来表示指数(底数为2),23位表示尾数,如图1-1所示。float类型的二进制形式
在这里插入图片描述

1.指数E在1 ~ 254

        在IEEE754中,约定小数点左边有一位隐含位。在表1-2中,“0.M”和“1.M”中的0和1就是隐含位。当指数取值在1 ~ 254时,这个隐含位为1,所以实际上尾数的有效位数是24位,即:1.MMMMMMMMMMMMMMMMMMMMMMM
        指数也叫阶码,为了表示指数的正负,阶码采用移码表示,移码值位127。所以float类型的实际取值可以用以下二进制表达式表示:
(-1)s *2E-127 *(1.M)。

float数字0.1

        计算出0.1的二进制形式

float f = 0.1f;
System.out.println(Float.floatToIntBits(f)); 

结果为1036831949,对应的32位二进制形式为;
0 01111011 10011001100110011001101
S = 0,E = 01111011 M = 1.10011001100110011001101 所以根据公式可得
(-1)0 * 2123-127 * 1.10011001100110011001101
最后计算可得110011001100110011001101 * 2-27 = 13421773 * 2-27
值为0.100000001490116119384765625
由此可得,在内存中,32位的二进制科学记数法不能精确的表示0.1,它与实际的0.1的误差为0.000000001490116119384765625。所以用浮点数进行数学计算时,会导致一些误差。

2.指数E为0

        当S,E,M部分都是0时,就表示数字0.0。如果指数位是0,尾数不为0,那么float的取值为:(-1)s *2-126 *(0.M)。这个范围内的浮点数绝对值都很小,可以表示接近于 0 的小数。

3.指数E为255

         这个用来表示一些特殊的数字,如表 1-2 所示:在这里插入图片描述
用Float的静态常量来表示这些特殊数字。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃鱼的ねこ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值