浮点数表示Java

Java中浮点数的表示方法

表示方法

对于float来说,4个字节,32位,0-22位表示尾数,23-30(8位)表示指数,31位表示符号位。

对于double来说,8个字节,64位,0-51表示尾数,52-62(11位)表示指数,63位最高位表示符号位。

  1. 具体分析表示方法

以一道例题开始

public static void main(String[] args) {
    float f1=20f;
    float f2=20.3f;
    float f3=20.5f;
    double d1=20;
    double d2=20.3;
    double d3=20.5;
    System.out.println(f1==d1);
    System.out.println(f2==d2);
    System.out.println(f3==d3);
}
true
false
true

表示如下:注意,指数位要移位存储,即float+127(2^7-1),double+1023(2^10-1)

f:0|1000 0011|0100 0000 0000 0000 0000 000
d:0|100 0000 0011|0100 0000(01后面50个0)

比较的时候是以符号位,指数位,小数位分别比较的,不足的地方以0补齐,所以相等,

符号位均为0;

指数位float减去127,并在前面补0,double减去1023;

尾数位,float末尾补0

所以相等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值