float 和 double 的区别

float表示单精度浮点数在机内占4个字节,用32位二进制描述。 
double表示双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。 
数符占1位二进制,表示数的正负。 
指数符占1位二进制,表示指数的正负。 
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点 
指数存指数的有效数字。 

指数占多少位,尾数占多少位,由计算机系统决定。 
可能是数符加尾数占24位,指数符加指数占8位 -- float. 
数符加尾数占48位,指数符加指数占16位 -- double. 

知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是浮点数的数值范围。

对编程人员来说,doublefloat 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,java语言中数学函数名称doublefloat不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。



1. float i=(float) (1/3.0f);   i=0.33333334                       82. double i=  1/3.0;             i=0.3333333333333333      163. System.out.println("i="+(2.0-1.1));      i=0.8999999999999999  默认是double
4. byte b = (byte)130;   //结果为-126
//System.out.println((byte)129);-127
计算方法:
数据130默认是int类型的十进制数据
第一步十进制的130转换成二进制数据
1 0 0 0 0 0 1 0
第二步130int类型是占4个字节的,所以在内存的表现形式是
00000000  00000000  00000000  10000010
做了截取后的结果为
10000010
通过观察最高位符号位是1,这是一个负数,因为在计算机中所有的数据都是以补码的形式出现的所以要算它的补码
原码:1 0000010    原码变反码,最高位符号位不变,其他数值位10,01得反码
反码:1 1111101    反码变补码就是反码加1得
补码;1 1111110
最终的看到的结果就是
1     1111110最高为是符号位不运算,数值为转化为十进制是64+32+16+8+4+2=126符号位负
所以为-126
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值